Я читал сообщения о пользовательских адаптерах и о том, как их индексировать, но, похоже, я не могу выполнить свою работу. Я перезаписываю getView, и мой XML содержит 1 TextView и 2 кнопки. Я сделал так, что обе кнопки были обнаружены onClickListener, но я не мог отличить, какой элемент ListView был тем, кто вызвал ClickEvent. Я пробовал использовать другой подход, но всегда получаю исключение NullPointerException в методе onClick.Android ListView onClickListener Пользовательский адаптер
@Override
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if(convertView == null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.listexample, null);
holder = new ViewHolder();
holder.textView = (TextView) convertView.findViewById(R.id.commandLine_text);
holder.start = (Button) convertView.findViewById(R.id.test_start_button);
holder.stop = (Button) convertView.findViewById(R.id.test_stop_button);
convertView.setTag(holder);
convertView.findViewById(R.id.commandLine_text);
convertView.findViewById(R.id.test_start_button);
convertView.findViewById(R.id.test_stop_button);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(this.getItem(position));
holder.start.setOnClickListener(this);
holder.stop.setOnClickListener(this);
return convertView;
}
@Override
public void onClick(View v) {
//Here i want to know which button of the two (start,stop) was clicked and what position
int position =(Integer)v.getTag();
Log.d("OnClick","Position: "+position);
}
static class ViewHolder {
TextView textView;
Button start;
Button stop;
}
Вам необходимо установить тег для своих кнопок 'holder.start.setTag (1); holder.start.setTag (2) ', а затем получить тег в' onClick' – Raghunandan