簡體   English   中英

Android ListView無法單擊項目

[英]Android ListView can't click Item

我有一個ListView。 我在單擊一個項目時實現了OnItemClickListener來打開一個ContextMenu。

lv = getListView();
    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            showMenu(view);
        }
    });

以及創建菜單的代碼。

public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.layout.friend_list_menu, menu);
}

public void showMenu(View v) {
    registerForContextMenu(v);
    openContextMenu(v);
}

我的問題是,當我點擊ListView的一個項目時,它會打開菜單。 但是,如果我回到ListView,我不能再次點擊該項目。 其他項目相同,關閉菜單后無法單擊。 誰能幫我這個?

你錯誤地設置了它。 您在設置適配器時注冊上下文菜單,而不是單擊按鈕。

它應該如下所示:

setListAdapter(lists);
registerForContextMenu(getListView());

然后你有你的onCreateContextMenuonContextItemSelected方法(我以編程方式創建我的方法,但你的膨脹的一個woudl工作也一樣):

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("List Operations");
    menu.add(0, v.getId(), 0, "Edit List");
    menu.add(0, v.getId(), 0, "Delete List");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();
    if (item.getTitle() == "Edit List") {
      //  Do your edit stuff here
    } else if (item.getTitle() == "Delete List") {
      // Do your delete stuff here
    }
    return super.onContextItemSelected(item);
}

您不需要使用onItemClick除非您想在短按項目時執行某些操作(上下文菜單是長按)。

以下代碼將起作用。

碼:

  ListView listview=(ListView)findViewByid(R.id.listview);

   /**** here write appending data to listview*******/
     ArrayAdapter<String> adp=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,/**your list items**/);
     listview.setadapter(adp);
     registerForContextMenu(listview);

   //listview item click listener
  listview.setOnItemClickListener(new OnItemClickListener(){

@Override
public void onItemClick(AdapterView<?> arg0, View v, int p, long arg3) {
    // TODO Auto-generated method stub

 Toast.makeText(getApplicationContext(), "selected" + p, 30).show();
}});

   /****do your context menu code here*******/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM