我有一个阵列列表,其中有一个元素长按,它显示了一个上下文菜单,我可以删除或编辑列表列表的选定项目。从阵列列表中删除或编辑元素
我的疑问是,我如何定义要选择的项目,以便编辑或删除它?
这些是引用上下文菜单的方法。这是我第一次使用这个菜单,而且我还没有测试过这个功能,所以这些方法可能是错误的。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info;
info = (AdapterView.AdapterContextMenuInfo) menuInfo;
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.edit_travel:
return true;
case R.id.delete_travel:
return true;
default:
return super.onContextItemSelected(item);
}
}
正如我所说的,我认为是缺少确定我想编辑或删除的ArrayList哪一个元素的方式,但我不知道如何定义这个
更新 - 添加的代码
public class TravelListActivity extends ListActivity {
private static final int REQUEST_CODE_CREATE_TRAVEL = 0;
private TravelAdapter adapter;
private class TravelAdapter extends ArrayAdapter<TravelInfo>{
private final Context context;
private final ArrayList<TravelInfo> travels;
private static final int RESOURCE = android.R.layout.simple_list_item_2;
public TravelAdapter(Context context, ArrayList<TravelInfo> travels) {
super(context, RESOURCE, travels);
this.context = context;
this.travels = travels;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout view;
ViewHolder holder;
if (convertView == null){
view = new LinearLayout(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(RESOURCE, view, true);
holder = new ViewHolder();
holder.text1 = (TextView) view.findViewById(android.R.id.text1);
holder.text2 = (TextView) view.findViewById(android.R.id.text2);
view.setTag(holder);
} else {
view = (LinearLayout) convertView;
holder = (ViewHolder) view.getTag();
}
TravelInfo info = travels.get(position);
holder.text1.setText(info.getCity() + " (" + info.getCountry() + ")");
holder.text2.setText(getResources().getString(R.string.year) + " " + info.getYear());
return view;
}
}
static class ViewHolder {
TextView text1;
TextView text2;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerForContextMenu(getListView());
包含Arraylist初始化的邮政编码。 –
发布您设置'longClickListener'的代码以及'onLongClick'的代码 –
我添加了更多代码...嗯,我没有实现这些方法,如上所述,不确定如何使用上下文菜单还有 – masmic