由网友(此用户已被举报)分享简介:这是类。我想右键菜单添加到它长preSS但作为一个新手,我发现自己很难。请帮助。 私人的ListView lvUsers; 私人的ArrayList< UserBO> mListUsers; / **当第一次创建活动调用。 * / @覆盖 公共无效的onCreate(捆绑savedInst...
这是类。我想右键菜单添加到它长preSS但作为一个新手,我发现自己很难。请帮助。
私人的ListView lvUsers; 私人的ArrayList< UserBO> mListUsers; / **当第一次创建活动调用。 * / @覆盖 公共无效的onCreate(捆绑savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.select); mListUsers = getUsers(); lvUsers =(ListView控件)findViewById(R.id.lv_user); lvUsers.setAdapter(新ListAdapter(这一点,R.id.lv_user,mListUsers)); } 公众的ArrayList< UserBO> getUsers(){ DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(本); 尝试{ dbAdapter.createDataBase(); }赶上(IOException异常五){ Log.i(***选择,e.getMessage()); } dbAdapter.openDataBase(); 查询字符串=SELECT * FROM用户; ArrayList的< ArrayList的<串GT;> StringList的= dbAdapter.selectRecordsFromDBList(查询,NULL); dbAdapter.close(); ArrayList的< UserBO> usersList =新的ArrayList< UserBO>(); 的for(int i = 0; I< stringList.size();我++){ ArrayList的<串GT;清单= stringList.get(I) UserBO用户=新UserBO(); 尝试{ user.id =的Integer.parseInt(list.get(0)); user.name = list.get(1); user.age = list.get(2); }赶上(例外五){ Log.i(***+ Select.class.toString(),e.getMessage()); } usersList.add(用户); } 返回usersList; } // *** *** ListAdapter 私有类ListAdapter扩展ArrayAdapter< UserBO> {// --CloneChangeRequired 私人的ArrayList< UserBO> mList; // --CloneChangeRequired 私人语境mContext; 公共ListAdapter(上下文的背景下,INT textViewResourceId,ArrayList的< UserBO>名单){// --CloneChangeRequired 超(背景下,textViewResourceId,清单); this.mList =清单; this.mContext =背景; } 公共查看getView(INT位置,查看convertView,父母的ViewGroup){ 查看查看= convertView; 尝试{ 如果(查看== NULL){ LayoutInflater VI =(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 鉴于= vi.inflate(R.layout.list_item,NULL); // --CloneChangeRequired(LIST_ITEM) } 最后UserBO的listItem = mList.get(位置); // --CloneChangeRequired 如果(的listItem!= NULL){ //设置LIST_ITEM意见 ((的TextView)view.findViewById(R.id.tv_id)).setText(listItem.getId()+); ((的TextView)view.findViewById(R.id.tv_name)).setText(listItem.getName()); ((的TextView)view.findViewById(R.id.tv_age)).setText(listItem.getAge()+); }}赶上(例外五){ Log.i(Select.ListAdapter.class.toString(),e.getMessage()); } 返回视图。 } }
解决方案
这应该做的伎俩。不要忘了:registerForContextMenu(lvUsers);
/ **第一次创建活动时调用。 * / @覆盖 公共无效的onCreate(捆绑savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.select); mListUsers = getUsers(); lvUsers =(ListView控件)findViewById(R.id.lv_user); lvUsers.setAdapter(新ListAdapter(这一点,R.id.lv_user,mListUsers)); ** registerForContextMenu(lvUsers)** }@覆盖公共无效onCreateContextMenu(文本菜单菜单视图V,ContextMenuInfo menuInfo){ super.onCreateContextMenu(菜单,V,menuInfo); MenuInflater吹气= getMenuInflater(); inflater.inflate(R.menu.context_menu,菜单);}@覆盖公共布尔onContextItemSelected(菜单项项){ AdapterContextMenuInfo信息=(AdapterContextMenuInfo)item.getMenuInfo(); 开关(item.getItemId()){ 案例R.id.edit: editNote(info.id); 返回true; 案例R.id.delete: deleteNote(info.id); 返回true; 默认: 返回super.onContextItemSelected(项目); }}< XML版本=1.0编码=UTF-8&GT?;<菜单的xmlns:机器人=http://schemas.android.com/apk/res/android> <项目机器人:ID =@ + ID /编辑 机器人:标题=@字符串/编辑/> <项目机器人:ID =@ + ID /删除 机器人:标题=@字符串/删除/>&所述; /菜单>
this is the class. i want to add context menu to it on longpress but as a newbie i find i difficult. Please help.
private ListView lvUsers;
private ArrayList<UserBO> mListUsers;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.select);
mListUsers = getUsers();
lvUsers = (ListView) findViewById(R.id.lv_user);
lvUsers.setAdapter(new ListAdapter(this, R.id.lv_user, mListUsers));
}
public ArrayList<UserBO> getUsers(){
DBAdapter dbAdapter=DBAdapter.getDBAdapterInstance(this);
try {
dbAdapter.createDataBase();
} catch (IOException e) {
Log.i("*** select ",e.getMessage());
}
dbAdapter.openDataBase();
String query="SELECT * FROM user;";
ArrayList<ArrayList<String>> stringList = dbAdapter.selectRecordsFromDBList(query, null);
dbAdapter.close();
ArrayList<UserBO> usersList = new ArrayList<UserBO>();
for (int i = 0; i < stringList.size(); i++) {
ArrayList<String> list = stringList.get(i);
UserBO user = new UserBO();
try {
user.id = Integer.parseInt(list.get(0));
user.name = list.get(1);
user.age = list.get(2);
} catch (Exception e) {
Log.i("***" + Select.class.toString(), e.getMessage());
}
usersList.add(user);
}
return usersList;
}
// ***ListAdapter***
private class ListAdapter extends ArrayAdapter<UserBO> { // --CloneChangeRequired
private ArrayList<UserBO> mList; // --CloneChangeRequired
private Context mContext;
public ListAdapter(Context context, int textViewResourceId,ArrayList<UserBO> list) { // --CloneChangeRequired
super(context, textViewResourceId, list);
this.mList = list;
this.mContext = context;
}
public View getView(int position, View convertView, ViewGroup parent){
View view = convertView;
try{
if (view == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.list_item, null); // --CloneChangeRequired(list_item)
}
final UserBO listItem = mList.get(position); // --CloneChangeRequired
if (listItem != null) {
// setting list_item views
( (TextView) view.findViewById(R.id.tv_id) ).setText( listItem.getId()+"");
( (TextView) view.findViewById(R.id.tv_name) ).setText( listItem.getName() );
( (TextView) view.findViewById(R.id.tv_age) ).setText( listItem.getAge()+"" );
}}catch(Exception e){
Log.i(Select.ListAdapter.class.toString(), e.getMessage());
}
return view;
}
}
解决方案
This should do the trick. Don't forget to: registerForContextMenu(lvUsers);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.select);
mListUsers = getUsers();
lvUsers = (ListView) findViewById(R.id.lv_user);
lvUsers.setAdapter(new ListAdapter(this, R.id.lv_user, mListUsers));
**registerForContextMenu(lvUsers);**
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.edit:
editNote(info.id);
return true;
case R.id.delete:
deleteNote(info.id);
return true;
default:
return super.onContextItemSelected(item);
}
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/edit"
android:title="@string/edit" />
<item android:id="@+id/delete"
android:title="@string/delete" />
</menu>
相关推荐
最新文章