Android 如何设置onListItemLongClick以从数据库中列出?

Android 如何设置onListItemLongClick以从数据库中列出?,android,android-listview,onlongclicklistener,Android,Android Listview,Onlongclicklistener,我想显示一个包含(编辑和删除)的布局,这样当用户长按列表中的一个项目时,他将得到一个对话框,可以选择是删除还是编辑该项目 我该怎么做?并且认为 public class MissionAct extends ListActivity { private DbaseManager datasource; @Override public void onCreate(Bundle savedInstanceState) { super.onCrea

我想显示一个包含(编辑和删除)的布局,这样当用户长按列表中的一个项目时,他将得到一个对话框,可以选择是删除还是编辑该项目 我该怎么做?并且认为

public class MissionAct extends ListActivity {
      private DbaseManager datasource;
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.addmission_activity);
        datasource = new DbaseManager(this);
        datasource.open(getBaseContext());
        List<Missions> values = datasource.getAllMissions();
        ArrayAdapter<Missions> adapter = new ArrayAdapter<Missions>(this,
                android.R.layout.simple_list_item_1, values);
            setListAdapter(adapter);
        this.getListView().setLongClickable(true);
        this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> adpter, View v, int position, long id) {
                Dialog dialog = new Dialog(getBaseContext());
                dialog.setContentView(R.layout.dialg);
                dialog.setTitle("Nouveau point");
                dialog.show();
                return true;
            }
        });                      
 }
          }
公共类任务扩展ListActivity{
专用DbaseManager数据源;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.addmission_活动);
datasource=新的DbaseManager(此);
datasource.open(getBaseContext());
列表值=datasource.getAllMissions();
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,值);
setListAdapter(适配器);
this.getListView().setLongClickable(true);
this.getListView().setOnItemLongClickListener(新的OnItemLongClickListener()){
长点击(AdapterView-adpter、视图v、整型位置、长id){
Dialog=新建对话框(getBaseContext());
setContentView(R.layout.dialg);
对话框.setTitle(“Nouveau point”);
dialog.show();
返回true;
}
});                      
}
}
错误日志是

04-29 13:42:45.048: E/Babel(31576): canonicalizeMccMnc: invalid mccmnc nullnull
04-29 13:42:46.067: E/dalvikvm(31611): Could not find class 'android.app.AppOpsManager', referenced from method box.a
04-29 13:42:46.957: E/CellLocation(30121): create GsmCellLocation
04-29 13:42:47.412: E/ActivityManager(245): mtprof entry can not found!
04-29 13:42:47.412: E/ActivityManager(245): java.io.FileNotFoundException: /proc/mtprof/status: open failed: ENOENT (No such file or directory)
04-29 13:42:47.412: E/ActivityManager(245):     at libcore.io.IoBridge.open(IoBridge.java:448)
04-29 13:42:47.412: E/ActivityManager(245):     at java.io.FileInputStream.<init>(FileInputStream.java:78)
04-29 13:42:47.412: E/ActivityManager(245):     at java.io.FileInputStream.<init>(FileInputStream.java:105)
04-29 13:42:47.412: E/ActivityManager(245):     at com.android.server.am.ActivityRecord.mtProf(ActivityRecord.java:852)
04-29 13:42:47.412: E/ActivityManager(245):     at com.android.server.am.ActivityRecord.windowsDrawn(ActivityRecord.java:653)
04-29 13:42:47.412: E/ActivityManager(245):     at com.android.server.am.ActivityRecord$Token.windowsDrawn(ActivityRecord.java:225)
04-29 13:42:47.412: E/ActivityManager(245):     at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:6994)
04-29 13:42:47.412: E/ActivityManager(245):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-29 13:42:47.412: E/ActivityManager(245):     at android.os.Looper.loop(Looper.java:154)
04-29 13:42:47.412: E/ActivityManager(245):     at com.android.server.wm.WindowManagerService$WMThread.run(WindowManagerService.java:754)
04-29 13:42:47.412: E/ActivityManager(245): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
04-29 13:42:45.048:E/Babel(31576):规范化mcmnc:invalid mccmnc nullnull
04-29 13:42:46.067:E/dalvikvm(31611):找不到从方法框.a引用的类“android.app.apppsManager”
04-29 13:42:46.957:E/CellLocation(30121):创建GsmCellLocation
04-29 13:42:47.412:E/ActivityManager(245):找不到mtprof条目!
04-29 13:42:47.412:E/ActivityManager(245):java.io.FileNotFoundException:/proc/mtprof/status:open failed:enoint(没有这样的文件或目录)
04-29 13:42:47.412:E/ActivityManager(245):位于libcore.io.IoBridge.open(IoBridge.java:448)
04-29 13:42:47.412:E/ActivityManager(245):位于java.io.FileInputStream。(FileInputStream.java:78)
04-29 13:42:47.412:E/ActivityManager(245):位于java.io.FileInputStream。(FileInputStream.java:105)
04-29 13:42:47.412:E/ActivityManager(245):位于com.android.server.am.ActivityRecord.mtProf(ActivityRecord.java:852)
04-29 13:42:47.412:E/ActivityManager(245):位于com.android.server.am.ActivityRecord.WindowsDrawed(ActivityRecord.java:653)
04-29 13:42:47.412:E/ActivityManager(245):位于com.android.server.am.ActivityRecord$Token.WindowsDrawed(ActivityRecord.java:225)
04-29 13:42:47.412:E/ActivityManager(245):位于com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:6994)
04-29 13:42:47.412:E/ActivityManager(245):位于android.os.Handler.dispatchMessage(Handler.java:99)
04-29 13:42:47.412:E/ActivityManager(245):位于android.os.Looper.loop(Looper.java:154)
04-29 13:42:47.412:E/ActivityManager(245):位于com.android.server.wm.WindowManagerService$WMThread.run(WindowManagerService.java:754)
04-29 13:42:47.412:E/ActivityManager(245):由以下原因引起:libcore.io.ErrnoException:打开失败:enoint(没有此类文件或目录)

您需要像这样为
列表视图
添加一个
OnItemLongClickListener
,以便在长时间单击项目时调用
onItemLongClick

getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)      { 
            // do your other stuff here based on the list item position
            return true;
        }
    });
getListView().setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener()){
@凌驾
公共布尔值长单击(AdapterView父对象、视图视图、整型位置、长id){
//根据列表项位置在此处执行其他操作
返回true;
}
});
试试这个

编辑

您可以使用上下文菜单,也可以参考以下示例


您可以这样实现它

this.getListView().setLongClickable(true);
this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(ctx);
    dialogBuilder.setTitle("Title");
    dialogBuilder.setMessage("Message?");
    dialogBuilder.setPositiveButton("Edit", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
               //Edit
        }
    });
    dialogBuilder.setNegativeButton("Delete", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
               //Delete
        }
    });
    dialogBuilder.create().show();
        return true;
    }
});
this.getListView().setLongClickable(true);
this.getListView().setOnItemLongClickListener(新的OnItemLongClickListener()){
公共布尔值长单击(AdapterView父对象、视图v、整型位置、长id){
AlertDialog.Builder dialogBuilder=新建AlertDialog.Builder(ctx);
dialogBuilder.setTitle(“标题”);
设置消息(“消息?”);
dialogBuilder.setPositiveButton(“编辑”,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
//编辑
}
});
dialogBuilder.setNegativeButton(“删除”,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
//删除
}
});
dialogBuilder.create().show();
返回true;
}
});
您可以使用位置作为索引来访问列表元素。

this.getListView().setLongClickable(true);
this.getListView().setLongClickable(true);
this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
        //set your dialog here
        return true;
    }
});
this.getListView().setOnItemLongClickListener(新的OnItemLongClickListener()){ 公共布尔值长单击(AdapterView父对象、视图v、整型位置、长id){ //在这里设置对话框 返回true; } });
no dont work fatal exeption android.view.WindowManager$BadTokenException:无法添加窗口--标记null不适用于应用程序是否可以尝试创建全局变量Context mContext=this;并使用mContext此行AlertDialog.Builder dialogBuilder=新建AlertDialog.Builder(mContext)Dot work fatal exeption android.view.WindowManager$BadTokenException:无法添加窗口--令牌null不适用于应用程序dont work fatal exeption android.view.WindowManager$BadTokenException:无法添加窗口--令牌null不适用于应用程序我编辑了问题,所以现在我输入了编辑的代码和错误日志
this.getListView().setLongClickable(true);
this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
        //set your dialog here
        return true;
    }
});