È possibile utilizzare un OnItemClickListener su un controllo ListView quando il layout Articoli dispone di un widget selezionabile/modificabile (RadioButton, EditText o CheckBox)?ListView con widget cliccabile/modificabile
risposta
Si potrebbe dare un'occhiata a this issue. Avere un oggetto focalizzabile in una riga di un ListView
causa l'invocazione di OnItemClickListener
. Tuttavia, ciò non significa che non è possibile avere elementi attivabili/selezionabili in una riga, esistono soluzioni alternative come this one.
Inoltre, è possibile dare un'occhiata alla schermata Registro chiamate. Ha un ListView
con elemento cliccabile (l'icona della chiamata sulla destra). See Source code here
Aiuto rapido: "Un modo semplice per ovviare a questo problema è chiamare " setDescendantFocusability (FOCUS_BLOCK_DESCENDANTS); " nelle viste listView così come sono aggiunti Sarai in grado di selezionare le righe, fare clic su righe e fare clic su caselle e pulsanti secondari. " - Questa è una citazione dal commento # 27 nella pagina a cui fanno riferimento due dei link nella risposta sopra. Grazie mille!! –
Il collegamento al workaround 1 è rotto. Qualcuno può modificare questo? – Martze
solo il primo link sta funzionando gli altri sono guasti, per favore risolto quello – BBdev
Citando commento # 31 nel collegamento di cui parla Samuh (che ha risolto il problema per me):
In realtà è possibile aggiungere al XML di layout (se gonfiato da uno): android: descendantFocusability = "blocksDescendants".
Aggiunta qui JIC che la pagina Web non è disponibile in futuro.
Se una riga di un elemento dell'elenco contiene una vista selezionabile o selezionabile, allora OnItemClickListener
non funzionerà.
elemento riga deve essere avere param come android:descendantFocusability="blocksDescendants"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:descendantFocusability="blocksDescendants"
android:gravity="center_vertical" >
// your other widgets here
</LinearLayout>
provato molte soluzioni complesse, ma era il più semplice che funzionava:
android: focalizzabile = "false"
<CheckBox
android:id="@+id/fav_check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false" />
Due migliori soluzioni
- Aggiungi
android:descendantFocusability="beforeDescendants"
a listView in xml O - Set dato due attributi per
false
come
android:focusable="false"
android:focusableInTouchMode="false"
Poi si gestirà il bambino oggetto fila listView (Button, EditText ecc.) invece di listView.setOnItemClick.
ho fissato il mio problema diverso, nel mio articolo ho più di una LinearLayout quindi se si dà id al vostro linearayout e setOnclickListener in classe adattatore funzionerà, unico effetto originale di toccare scompariranno. ma questo link Making a LinearLayout act like an Button è utile per fare linearlaout agire pulsante mi piace al clic
voce
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp">
<TextView
android:id="@+id/txt_item_followers_name"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:gravity="center|start"
android:paddingLeft="15dp"
android:text="Ali"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/imageView"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/txt_item_followers_name"
android:layout_marginLeft="10dp"
android:src="@drawable/puan_icon" />
<TextView
android:id="@+id/txt_item_followers_mark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView"
android:layout_toEndOf="@+id/imageView"
android:background="@color/red_400"
android:paddingLeft="10dp"
android:text="25.5"
android:textAppearance="?android:attr/textAppearanceSmall" />
<LinearLayout
android:id="@+id/linear_one"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/txt_item_followers_name"
android:background="@color/red_400"
android:orientation="vertical">
<ImageView
android:id="@+id/btn_item_followers_2b_follow"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_marginLeft="10dp"
android:src="@drawable/follow_buton" />
</LinearLayout>
</RelativeLayout>
all'interno metodo GetView
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View view = convertView;
if (convertView == null)
view = inflater.inflate(R.layout.deneme, null);
final Followers2 myObj = myList.get(position);
LinearLayout linear_one = (LinearLayout) view.findViewById(R.id.linear_one); // HERE WE DOMUNİCATE IT
linear_one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(parentActivity, "One Two", Toast.LENGTH_SHORT).show();
}
});
TextView name = (TextView) view.findViewById(R.id.txt_item_followers_name);
TextView mark = (TextView) view.findViewById(R.id.txt_item_followers_mark);
final ImageView btn_follow = (ImageView) view.findViewById(R.id.btn_item_followers_2b_follow);
name.setText(myObj.getName());
mark.setText(myObj.getScore());
/* if (myObj.isFollow() == true) {
btn_follow.setImageResource(R.drawable.following_buton);
} else {
btn_follow.setImageResource(R.drawable.follow_buton);
}
btn_follow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Followers2 myObj = myList.get(position);
if (myObj.isFollow() == true) {
btn_follow.setImageResource(R.drawable.following_buton);
} else {
btn_follow.setImageResource(R.drawable.follow_buton);
}
}
});*/
return view;
}
- 1. Android - Widget con Scrollable Listview Manuale Aggiorna
- 2. Widget cliccabile Android con ListView non selezionabile su ListItems
- 3. Implementazione di ListView nel widget della schermata iniziale
- 4. Come creare Listview con l'aiuto di remoteview?
- 5. jQueryUI Widget con knockout
- 6. Widget Android con Cordova
- 7. ListView con ScrollView orizzontale
- 8. C# ListView con ProgressBar
- 9. Filter ListView con arrayadapter
- 10. ListView con il titolo
- 11. Sostituisci ListView con RecyclerView
- 12. ListView con OnItemClickListener android
- 13. Gtk3 sostituisce il widget figlio con un altro widget
- 14. Due pulsanti con PendingIntents - Widget
- 15. widget Android con più pulsanti
- 16. Scrivi widget personalizzato con GTK3
- 17. Barra di azione Android Cerca con listview
- 18. Disattiva ripple su ListView
- 19. Ordinamento ListView colonne con frecce
- 20. ListView con triangolare elementi sagomati
- 21. Yii2 Impaginazione listview con ajax
- 22. LINQ e paging con listview
- 23. ListView con immagini e testo
- 24. Aggiornamento Android ListView con SimpleCursorAdapter
- 25. Autodividers ListView con l'opzione pieghevole
- 26. Cerca in ListView con EditText
- 27. ListView scrollbarStyle con margine/riempimento
- 28. Android looping infinito ListView?
- 29. Attività di avvio Android quando si preme il widget ListView item
- 30. smoothScrollToPositionFromTop per Froyo ListView?
Estende ListActivity invece di attività. consultare http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/ –