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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top