Передача параметра прослушивателю onclick для кнопки в строке списка просмотра

Я только что запустил Android и столкнулся с некоторыми проблемами.
Я создал ListView , который заполняется из базы данных.
В каждой строке есть кнопка для удаления элемента из списка и базы данных.

Мне удалось подключить прослушиватель событий к кнопке, но я не смог определить соответствующую запись базы данных, которую нужно удалить.

Мой класс показан ниже.

public class FeedArrayAdapter extends ArrayAdapter<Feed> implements OnClickListener
{
    private ARssEReaderDBAdapter dba;
    private String TAG = "FeedArrayAdapter";

    public FeedArrayAdapter(Context context, int textViewResourceId, List<Feed> items)          {
    super(context, textViewResourceId, items);
    Log.w(TAG, "List");


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Log.w(TAG, "getView");
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.feedlistrow, null);
    }
    Feed feed = getItem(position);
    if (feed != null) {
        TextView title = (TextView)v.findViewById(R.id.TextView01);
        if (title != null) {
            title.setText(feed.getTitle());
        }
        Button btnDelete = (Button)v.findViewById(R.id.btnDelete);
        btnDelete.setOnClickListener(this); //btnDeleteFeedListener
    }
    return v;
}

public void onClick(View v) {
    Log.w(TAG, "something got clicked: ");
}

Итак, как я могу передать идентификатор записи базы данных обработчику, чтобы я мог использовать адаптер базы данных для его удаления?

20
задан akdsouza 13 September 2016 в 05:46
поделиться

2 ответа

Вы должны сохранить идентификатор записи в теге, вызовите setTag () на ваш взгляд, и для чтения в вызове onclick getTag ()

39
ответ дан 29 November 2019 в 22:52
поделиться

Создайте внутренний класс, реализующий OnClickListener, а затем передайте переменную позиции в конструктор.

 private Class MyClickListener implements OnClickListener {

    private int position;

    public MyClickListener(int position) {
       this.position = position;
    }

    public void onClick(View v) {
       System.out.println("position " + getPosition() + " clicked.");
    }

    public int getPosition() {
      return position;
    }

 }
22
ответ дан 29 November 2019 в 22:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: