0
我已經實施了一個ListView
與ListFragment
,它附有AsyncTaskLoader
。數據從數據庫填充。每行有一個PopUp
的菜單按鈕,其中還有2個選項(編輯&刪除)。刪除用AsyncTaskLoader連接的一行ListView
我想要的是,當任何選項被點擊時,該對象從數據庫中刪除。
如何獲取已刪除對象的ID?
我的適配器:
public class ConferenceAdapter extends ArrayAdapter<Conference> implements View.OnClickListener, PopupMenu.OnMenuItemClickListener{
private Context context;
private final LayoutInflater mInflater;
public ConferenceAdapter(Context context) {
super(context, R.layout....);
this.context = context;
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void setData(List<Conference> data) {
clear();
if (data != null) {
addAll(data);
}
}
/**
* Populate new items in the list.
*/
@Override public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
Conference conference = (Conference)getItem(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_conference_fragment, parent, false);
holder = new ViewHolder();
...
holder.btnOverflow = (ImageButton)convertView.findViewById(R.id.btn_overflow);
...
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.btnOverflow.setOnClickListener(this);
...
return convertView;
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_overflow) {
PopupMenu pm = new PopupMenu(context, v);
Menu menu = pm.getMenu();
menu.add("Edit");
menu.add("Delete");
pm.show();
pm.setOnMenuItemClickListener(this);
}
}
@Override
public boolean onMenuItemClick(MenuItem item) {
OnPopUpListener listener = (OnPopUpListener)context;
if (item.getTitle().equals("Delete")) {
// What logic should I use here?
// How can I get current Object as I do not have a list?
listener.onDelete(...);
}
return false;
}
static class ViewHolder {
ImageButton btnOverflow;
...
}
}