Ho un ListView personalizzato con due pulsanti e I quando faccio clic su uno dei due pulsanti su qualsiasi riga Voglio ottenere l'etichetta di testo su Listview e per ora basta visualizzare un brindisi con esso. Finora non ha funzionato. Continuo a ricevere l'ultimo elemento nel mio array.Android: Ottieni l'oggetto listview dal pulsante su cui si fa clic nell'elenco personalizzato
Ecco uno screenshot per darvi una migliore idea di quello che voglio dire
Ecco il mio sottoclasse adattatore per il mio ListView personalizzato
static final String[] Names =
new String[] { "John", "Mike", "Maria", "Miguel"};
class MyArrayAdapter extends ArrayAdapter<String> {
private final Context context;
int which;
public MyArrayAdapter(Context context, String[] pValues) {
super(context, R.layout.main, pValues);
this.context = context;
values = pValues;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.main, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
Button call = (Button) rowView.findViewById(R.id.button1);
Button chat = (Button) rowView.findViewById(R.id.button2);
textView.setText(values[position]);
// Change icon based on name
s = values[position];
which = position;
call.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String name = values[which];
Toast.makeText(CustomListView.this, name, Toast.LENGTH_SHORT).show();
}
});
return rowView;
}
}
Edit:
String name = textView.getText().toString();
RelativeLayout ll = (RelativeLayout)v.getParent();
textView = (TextView)ll.findViewById(R.id.label);
Toast.makeText(CustomListView.this, name,
Toast.LENGTH_SHORT).show();
try 'textView.getText(). ToString()' al posto di 'values [which]'. –