как получить идентификатор кнопки в списке? - PullRequest
2 голосов
/ 17 ноября 2011

В моем приложении я использую List Activity, в котором я передал ArrayAdapter, метод getView () похож на этот

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    mPosition= position;
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.imagelistlayout, null, true);
    deleteButton= (Button)rowView.findViewById(R.id.delete_bn);
    deleteButton.setTag(position);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    textView.setText(names[position]);


    return rowView;

} 

, теперь я хочу установить onclicklistener () на deleteButton.он должен удалить элемент при нажатии соответствующей кнопки удаления.Пожалуйста, помогите мне.

Ответы [ 5 ]

2 голосов
/ 17 ноября 2011

вы можете использовать метод setTag, доступный для просмотра.Установите id / position на кнопках delete setTag и onClicklistener, вы можете получить id / position с помощью view.getTag ()

1 голос
/ 17 ноября 2011

есть фрагмент кода, который я недавно использовал в своем приложении

((Button) l.findViewById(R.id.btn_rm)).setOnClickListener(new OnClickListener(){
public void onClick(View v) { 

    list_of_elements.remove(position);      
    My_Custom_List_Adapter.this.notifyDataSetChanged(); 
}                   
});

обратите внимание, что он был разработан в расширяемом ltatadapter, поэтому он может немного отличаться от обычного listadapter

1 голос
/ 17 ноября 2011

Вы должны добавить OnClickListener непосредственно к кнопке внутри getView().

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
  mPosition= position;
  LayoutInflater inflater = context.getLayoutInflater();
  View rowView = inflater.inflate(R.layout.imagelistlayout, null, true);
  deleteButton= (Button)rowView.findViewById(R.id.delete_bn);
  deleteButton.setOnClickListener( new OnClickListener() {
    public void onClick( View v ) {
      //Handle deleting the item here.
      //If you need the layout holding the button, you can probably get it by using v.getParent()
    }
  });
  TextView textView = (TextView) rowView.findViewById(R.id.label);
  textView.setText(names[position]);

  return rowView;
}
0 голосов
/ 17 ноября 2011
...
deleteButton.setOnClickListener( new OnClickListener() {
public void onClick( View v ) {
  //Handle deleting the item here.
  // or item enable -> false
 v.getParent()
}
});
...
0 голосов
/ 17 ноября 2011

1. Создайте интерфейс с методом delete (int position).

2. Реализуйте его в деятельности, где вы используете ListView

delete(int position) 
{
adapter.remove(position) // modify the syntax as per need .
}

3. Передайте этот интерфейс адаптеру через конструктор,

4. Напишите onClickListener внутри getView для кнопки delete и вызовите i nterface.delete(position)

...