Dove eseguire onClickListener e come?
-
29-10-2019 - |
Domanda
Ho un'attività che ha un pulsante e un listview (con chechbox, immagine e testo).
Sto creando listview dalla classe customAdapter che estende la classe BaseAdapter
.
Sto gestendo le caselle di controllo in quella classe customAdapter.
Ora il mio problema è come sapere quale elemento è stato controllato e come eseguire un'azione su
quella lista selezionataItems. Perché il mio pulsante è nell'attività ma ho bisogno di eseguire quel onClickListener
in quella classe customadapter
??
Grazie per l'aiuto.
Soluzione
Si inserirebbe il pulsante Fare clic su Ascoltatore all'interno del metodo GetView (), in cui si gonfia la vista per ogni riga nell'elenco.
Per gli elementi della casella di controllo, dovresti fare lo stesso ... Sembrerebbe qualcosa come questo nella tua GetView ()
CheckBox cbx = (CheckBox)view.findViewById(R.id.c_checkbox);
if(cbx.isChecked()){
Toast.makeText(getApplicationContext(),
"Checked position " + position,
Toast.LENGTH_SHORT).show();
}
. Altri suggerimenti
È possibile utilizzare un OnItemClickListener
personalizzato che implementa OnClickListener
.
private class CustomAdapter extends BaseAdapter implements OnClickListener {
public MyAdapter() {
/* Your constructor */
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.custom_row, null);
}
// take the CheckBox and set the listener.
CheckBox cbx = (CheckBox) convertView.findViewById(R.id.checkbox);
cbx.setOnClickListener(this);
// set the listener for the whole row.
convertView.setOnClickListener(new OnItemClickListener(position));
return convertView;
}
@Override
public void onClick(View v) {
Log.v(TAG, "Row button clicked");
}
}
private class OnItemClickListener implements OnClickListener{
private int mPosition;
OnItemClickListener(int position){
mPosition = position;
}
@Override
public void onClick(View v) {
Log.v(TAG, "onItemClick at position" + mPosition);
}
}
}
Nota inoltre che l'inserimento di una vista attivabile in un elemento dell'elenco impedisce l'attivazione di onListItemClick () quando si fa clic sull'elemento dell'elenco.
Spero che questo aiuti.