ListFragment onItemClickListener no funciona
Estoy usando el diseño con pestañas (con swipe). Aquí tengo 3 pestañas con controlado por un SectionsPagerAdapter. Cada ficha es un ListFragment.
Ahora quiero obtener un evento disparado cuando se hace clic en uno de los elementos de la lista. Me gustaría un oyente para cada ficha.
- Menú Ribbon de Android con fragmentos
- Cambiar la fuente del fragmento de lista en el fragmento de detalle
- Reemplazar ListFragment con fragmento dentro de ViewPager con pestañas
- MultiChoiceModeListener que causa problemas con SherlockListFragment
- Android ImageView no coincide con_parent dentro de FrameLayout por debajo de GingerBread
Aquí está el código ahora (que no funciona, el evento no se dispara).
public class NyhederFragment extends ListFragment { public static final String ARG_SECTION_NUMBER = "section_number"; private static final String TAG="NyhederFragment"; private List<Item> newsItems; private ArrayList newsHeadlines; private ArrayAdapter adapter; private BroadcastReceiver updateReciever; public NyhederFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ListView newsList = new ListView(getActivity()); newsList.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); newsList.setId(R.id.list); DatabaseHelper dbConn = new DatabaseHelper(getActivity()); newsItems = dbConn.getAllItemsFromNews(); newsHeadlines = new ArrayList(); for(Item i : newsItems){ newsHeadlines.add(i.getTitle()); } adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, newsHeadlines); setListAdapter(adapter); newsList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.i("debug", "single click"); } }); dbConn.close(); getActivity().registerReceiver(updateReciever, new IntentFilter("ArticlesUpdated")); return newsList; } }
¿Qué es, estoy haciendo mal?
¡Muchas gracias por adelantado!
- Separador de sombras entre fragmentos de Android
- setEmptyView () no parece funcionar para (Sherlock) ListFragment
- Filtrar un ListFragment de la ActionBar en la actividad de los padres
- Resaltar el elemento seleccionado en "ListFragment"?
- Cómo cambiar fragmento de forma programática en FragmentPagerAdapter?
- Cómo utilizar ListFragment en Android Swipe Tabs?
- Error de Android - getListView () en ListFragment
- ListView muestra brevemente el mensaje vacío antes de cargar los datos
Si está utilizando ListFragment
entonces simplemente puede usar su método override onListItemClick()
@Override public void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); }
Se debe al elemento de lista personalizada. El enfoque predeterminado es con el elemento de lista personalizado (botón / vista de texto). Causa este problema.
Agregue android:descendantFocusability="blocksDescendants"
en el diseño raíz del elemento de lista. Espero que esto ayude a alguien.
Cambiar setListAdapter(adapter);
A newsList.setAdapter(adapter);
Si desea crear o volver a utilizar o un manejador existente que implementa AdapterView.OnItemClickListener
, en lugar de implementar onListItemClick()
dentro de ListFragment
, puede hacerlo obteniendo una referencia a ListView
del ListFragment
y estableciendo su oyente. En tu ListFragment.onResume()
podrías hacer:
@Override public void onResume() { super.onResume(); ListView listView = getListView(); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.d("TAG", "Stop touching me"); } }); }
En mi caso, puedo usar el mismo listener de una Activity
con ListView
, ListActivity
o ListFragment
, por ejemplo
listView.setOnItemClickListener(new MyListViewOnClickListener(getActivity()));
- Imageview height como wrap_content de la imagen mostrada
- Android: reduce el espacio entre columnas en GridView