Custom ArrayAdapter en un ListFragment
Estoy intentando crear un ArrayAdapter
encargo para utilizar para mi ListFragment
. En este momento nada se muestra en el ListFragment
excepto para el TextView
diciendo qué número de fragmento es. He puesto un punto de interrupción en el método getView()
de mi adaptador y no se está llamando. He buscado por razones que no sería llamado y algunas personas parecen pensar que mi ListView está oculto, así que he intentado cambiar el layout_height
a wrap_content
, pero eso no funcionó.
Además, he estado siguiendo el código de la página de este desarrollador: http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html
- Android ViewPager / PagerAdapter ImageView OutOfMemoryError
- Dimensión de ViewPager de Android
- ¿Es posible desactivar el desplazamiento en un ViewPager?
- Detección de eventos de toque / toque en un viewpager
- Cómo conservar el estado de ViewPager dentro de un RecyclerView?
ListFragment:
public class HomeFragment extends ListFragment implements FragmentTitle { private int mNum = 0; private String mTitle = "Home"; private ListView mListView; private MyArrayAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mNum = getArguments() != null ? getArguments().getInt("num") : 1; InfoContainer temp = new InfoContainer("test1", "test2"); mAdapter = new MyArrayAdapter(getActivity(), android.R.id.list, temp); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v1 = inflater.inflate(R.layout.fragment_pager_list, container, false); TextView tv = (TextView) v1.findViewById(R.id.text); tv.setText("Fragment #" + mNum); mListView = (ListView) v1.findViewById(android.R.id.list); return v1; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mListView.setAdapter(mAdapter); } @Override public void onListItemClick(ListView l, View v, int position, long id) { Log.i("HomeFragment", "Item clicked: " + id); } public CharSequence getTitle() { return mTitle; } }
ArrayAdapter:
public class MyArrayAdapter extends ArrayAdapter<InfoContainer> { Context mContext; InfoContainer data; public MyArrayAdapter(Context context, int textViewResourceId, InfoContainer temp) { super(context, textViewResourceId); mContext = context; this.data = temp; } @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; ViewHolder holder = new ViewHolder(); if(row == null) { LayoutInflater inflater = ((Activity)mContext).getLayoutInflater(); row = inflater.inflate(R.id.pager, parent, false); holder.v1 = (TextView) row.findViewById(R.id.listview_name); holder.v2 = (TextView) row.findViewById(R.id.listview_data); row.setTag(holder); } else { holder = (ViewHolder) row.getTag(); } InfoContainer info = data; holder.v1.setText(info.name); holder.v2.setText(info.text); return row; } public static class ViewHolder { TextView v1; TextView v2; } }
Fragment_pager_list.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#000000" > <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical|center_horizontal" android:text="@string/hello_world" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#FFFFFF" /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:background="@drawable/listview_background" android:textColor="#FFFFFF" />
He hecho Custom ArrayAdapters antes sin ningún problema, así que ¿hay algo que me falta para hacer que funcionen con un ListFragment?
- Ficha de fragmento de Android con viewpager para todos los api
- Los fragmentos de ViewPager desaparecen al cambiar la rotación de la pantalla
- ¿Cómo ocultar y mostrar correctamente la barra de acciones con la nueva API de la biblioteca de diseño?
- Llame a actvity después de que el viewpager haya terminado
- Android ViewPager muestra el teclado virtual en el lugar equivocado
- Actualizar imágenes en FragmentStatePagerAdapter al reanudar la actividad
- Android ViewPager y vistas ilimitadas
- Soltar sombra para un ViewPager
La solución es que getCount()
devolvía 0 para mi ArrayAdapter. Tan apenas utilicé mAdapter.add(temp)
y después mAdapter.notifyDataSetChanged()
y trabajó. También tuve que cambiar la fila row = inflater.inflate(R.id.pager, parent, false);
A row = inflater.inflate(R.layout.listview_row, parent, false);
- Actualizar el SO de Android mediante programación
- Cómo acortar el período de reintento de descarga de almacenamiento de Firebase en Error de red