Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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.

  • Verificar que Android apk no ha sido reempaquetado?
  • ¿Cómo desplazarse al centro del hijo de HorizontalScrollView?
  • Detección de un clic en el botón de la barra de acción de nuevo - (OnOptionsItemSelected no llamar cuando haga clic en el botón de la barra de acción de vuelta)
  • Cómo convertir milisegundos a la fecha en SQLite
  • El deslizador siempre tiene el ancho predeterminado
  • El proceso del servicio se cancela después de que la aplicación se elimina de la bandeja de aplicaciones
  • 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!

  • Variedad de errores HTTPs al comunicarse con el servidor desde la aplicación Android
  • Establecer color del cursor EditText
  • ¿Qué tipo de formatos de imagen debo utilizar en una aplicación de Android?
  • ¿Por qué no son los SDK de Android SDK en cualquier repositorio de Maven?
  • Android 4.3: Cómo conectarse a varios dispositivos Bluetooth Low Energy
  • Cómo recortar un java stringbuilder?
  • 4 Solutions collect form web for “ListFragment onItemClickListener no funciona”

    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()));

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.