2012-08-25 87 views
1

我想爲列表創建一個上下文菜單。實現上下文菜單到ListView?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
</ListView> 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // setContentView(R.layout.activity_main); 
    content = new ArrayList<HashMap<String,String>>(); 

    ListView list = (ListView)findViewById(R.id.list); 
    registerForContextMenu(list); 
}  

當它到達registerForContextMenu(list);,我得到一個運行時錯誤。

另一件事,當我在XML中使用android:id="@androidid/list"時,我該如何引用列表? 我試過ListView list = (ListView)findViewById(android.R.id.list);,但仍然收到錯誤 註冊到上下文菜單。

+1

列表爲空,因爲您沒有設置內容視圖。 – Luksprog

+0

首先設置內容查看然後使用findViewByID –

+0

,但然後我得到一個錯誤,因爲我在xml中使用android:id =「@ + id/list」 。當我試圖使用android:id =「@ android:id/list」和 ListView list =(ListView)findViewById(android.R.id.list); ,我沒有得到錯誤,但仍然沒有上下文菜單(我沒有實現onCreate) – user1624426

回答

0

檢查下面的代碼

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    lview3 = (ListView) findViewById(R.id.listView3); 

    adapter = new ListviewAdapter(this, month, desc, icons); 
     // set here your listview adapter value 
    lview3.setAdapter(adapter); 

    //for context menu 
    registerForContextMenu(lview3); 

} 

//start from here context menu// 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle("select"); 
    menu.add(0, v.getId(), 0, "Action 1"); 
    menu.add(0, v.getId(), 0, "Action 2"); 
    menu.add(0, v.getId(), 0, "Action 3"); 
} 


@Override 
public boolean onContextItemSelected(MenuItem item) { 
    if (item.getTitle() == "Action 1") { 
     // 
    } else if (item.getTitle() == "Action 2") { 
     // 
    } else { 
     return false; 
    } 
    return true; 
} 

好運。