2013-07-02 31 views
6

如何打開菜單上下文Android與點擊按鈕在列表視圖適配器?如何使用listview適配器中的單擊按鈕打開Menu Context Android?

我試着與我的代碼,但不顯示菜單背景下,

代碼

public View getView(int position, View convertView, ViewGroup parent) { 
     vi=convertView; 
    if(convertView==null) 
     vi = inflater.inflate(R.layout.tulisan_komentar_list_item,parent, false); 
    LinearLayout content_favorite= (LinearLayout)vi.findViewById(R.id.content_favorite); 
    final TextView date_komentar = (TextView)vi.findViewById(R.id.date_komentar); // artist name 
    final TextView isi_komentar = (TextView)vi.findViewById(R.id.isi_komentar); // duration 
    final TextView nama_komentar = (TextView)vi.findViewById(R.id.nama_komentar); // duration 
    final TextView id_tulisan_komentar = (TextView)vi.findViewById(R.id.id_tulisan_komentar); // duration 
    final ImageButton act_komentar = (ImageButton)vi.findViewById(R.id.act_komentar); 
    ImageView thumb_image=(ImageView)vi.findViewById(R.id.avatar_komentar); // thumb image 

    HashMap<String, String> tulisan = new HashMap<String, String>(); 
    tulisan = data.get(position); 

    // Setting all values in listview 
    date_komentar.setText(tulisan.get(ContentCommentActivity.TAG_DATE_KOMENTAR)); 
    isi_komentar.setText(tulisan.get(ContentCommentActivity.TAG_ISI_KOMENTAR)); 
    nama_komentar.setText(tulisan.get(ContentCommentActivity.TAG_NAMA_KOMENTAR)); 
    id_tulisan_komentar.setText(tulisan.get(ContentCommentActivity.TAG_ID_TULISAN_KOMENTAR)); 
    String avatar_komentar = tulisan.get(ContentCommentActivity.TAG_AVATAR_KOMENTAR); 

    if(hide_gambar.equals("Y")){ 
     thumb_image.setVisibility(View.GONE); 
    } 

    else{ 
     thumb_image.setVisibility(View.GONE); 
     /* thumb_image.setVisibility(View.VISIBLE); 
     if (avatar_komentar.equals("")) { 
      thumb_image.setVisibility(View.GONE); 
     } else { 
      imageLoader.DisplayImage(tulisan.get(ContentCommentActivity.TAG_AVATAR_KOMENTAR), thumb_image); 
      thumb_image.setVisibility(View.VISIBLE); 

     } */ 
    } 

    activity.registerForContextMenu(act_komentar); 

    act_komentar.setOnClickListener(new android.view.View.OnClickListener() 
    { 

     public void onClick(View v) 
     { 
      activity.openContextMenu(v); 
      v.showContextMenu(); 

     } 
    }); 


    return vi; 

} 


public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    menu.setHeaderTitle("My Context Menu"); 
    menu.add(0, 1, 0, "Add"); 
    menu.add(0, 2, 0, "Edit"); 
    menu.add(0, 3, 1, "Delete"); 
} 

你能告訴我,它應該是如何工作的?

回答

17

使用這樣的:

act_komentar.setOnClickListener(new android.view.View.OnClickListener() { 

    public void onClick(View v) { 
     //To register the button with context menu. 
     registerForContextMenu(act_komentar); 
     openContextMenu(act_komentar); 

    } 
}); 

final int CONTEXT_MENU_VIEW = 1; 
final int CONTEXT_MENU_EDIT = 2; 
final int CONTEXT_MENU_ARCHIVE = 3; 
@Override 
public void onCreateContextMenu (ContextMenu menu, View 
v, ContextMenu.ContextMenuInfo menuInfo){ 
    //Context menu 
    menu.setHeaderTitle("My Context Menu"); 
    menu.add(Menu.NONE, CONTEXT_MENU_VIEW, Menu.NONE, "Add"); 
    menu.add(Menu.NONE, CONTEXT_MENU_EDIT, Menu.NONE, "Edit"); 
    menu.add(Menu.NONE, CONTEXT_MENU_ARCHIVE, Menu.NONE, "Delete"); 
} 

@Override 
public boolean onContextItemSelected (MenuItem item){ 
    // TODO Auto-generated method stub 
    switch (item.getItemId()) { 
     case CONTEXT_MENU_VIEW: { 

     } 
     break; 
     case CONTEXT_MENU_EDIT: { 
      // Edit Action 

     } 
     break; 
     case CONTEXT_MENU_ARCHIVE: { 

     } 
     break; 
    } 

    return super.onContextItemSelected(item); 
} 

輸出:

enter image description here

希望這會爲你工作。

+0

謝謝你的答案..我嘗試但不工作... 這是部分行代碼是否正確? >> public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){ menu.setHeaderTitle(「My Context Menu」); menu.add(0,1,0,「Add」); menu.add(0,2,0,「編輯」); menu.add(0,3,1,「刪除」); } – bukanamay

相關問題