Я только что запустил 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: ");
}
Итак, как я могу передать идентификатор записи базы данных обработчику, чтобы я мог использовать адаптер базы данных для его удаления?
Вы должны сохранить идентификатор записи в теге, вызовите setTag ()
на ваш взгляд, и для чтения в вызове onclick getTag ()
Создайте внутренний класс, реализующий 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;
}
}