tutorial studio personalizado listfragment item ejemplo dentro android android-layout android-fragments android-listview android-inflate

studio - listview fragment android ejemplo



Android+ListFragment con una jerarquía de vista personalizada (5)

Estoy intentando personalizar el diseño del fragmento devolviendo mi propia jerarquía de vistas desde onCreateView(LayoutInflater, ViewGroup, Bundle) . Esto infla mi vista personalizada, pero parece apilar las vistas en lugar de inflarse dentro, veo todo a la vez. Cualquier ayuda es apreciada.

MyActivity.java:

public class MyActivity extends FragmentActivity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) { ArrayListFragment list = new ArrayListFragment(); getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit(); } } public static class ArrayListFragment extends ListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { inflater.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.main, container); return super.onCreateView(inflater, container, savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); String List[] = {"Larry", "Moe", "Curly"}; setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, List)); } } }

main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="8dp" android:paddingRight="8dp"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="THIS IS A BUTTON" /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00FF00" android:layout_weight="1" android:drawSelectorOnTop="false" /> <TextView android:id="@android:id/empty" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF0000" android:text="No data" /> </LinearLayout>


¡Usa este patrón, funciona perfectamente!

inflater.inflate(R.layout.list_layout, container, false);

public View inflate (analizador XmlPullParser, raíz de ViewGroup, attachoolRoot booleano)

attachToRoot ¿Se debe adjuntar la jerarquía inflada al parámetro raíz? Si es falso, la raíz solo se usa para crear la subclase correcta de LayoutParams para la vista raíz en el XML.


Creo que será mejor que

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.main, container, false); return root; }


Manera optimizada y código de disparo.

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.list_alphabet, container, false); }


No estaba devolviendo la nueva vista dentro del método onCreateView de la clase ListFragment. Por ejemplo:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.main, null); return view; }

¡Todo funciona bien ahora en la tierra de Android!


getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit();

La lista no es aceptada, está buscando un fragmento.