2011-07-18 9 views
0

私はカスタムボタンを使ってリストビューをイメージボタンとテキストビューで表示しています。アイテムをクリックしたときにリストビュー内の個別の要素を選択してください

私は、プレスがイメージ・ボタンの上に作られたときに、コンテキストメニューを開き、と私はテキストビューを押すと、別のコンテキストメニューを開きたいです。

どうすればいいですか?

これは私のonClickListener

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

      if (id == view.findViewById(R.id.label).getId()) //label press 
      { 
       TextView text = (TextView) view.findViewById(R.id.label); 
       registerForContextMenu(text); 
       openContextMenu(text); 
      } 
      else //imageButton press 
      { 
       ImageButton ib= (ImageButton) view.findViewById(R.id.image); 
       registerForContextMenu(ib); 
       openContextMenu(ib); 
      } 
     } 
     }); 

答えて

0

ビューにOnCreateContextMenuListener追加です:

text.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { 
      @Override 
      public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo info) { 
       menu.setHeaderTitle("Text context menu"); 
       menu.add(ContextMenu.NONE, MY_OPTION_CONTEXT_MENU, ContextMenu.NONE, "Some option"); 
      } 
     }); 

アクティビティビューで:

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 

    switch(item.getItemId()) { 
     case MY_OPTION_CONTEXT_MENU: 
      TextView v = (TextView) info.targetView; 
      // more code here 
      return true; 
    } 

    return super.onContextItemSelected(item); 
} 
+0

感謝!また、あなたは、ビューの作成の瞬間に、リスナーを追加することができます "getView"でcustomAdapter – thenosic

0
public View getView(int position, View convertView, 
          ViewGroup parent) { 
     LayoutInflater inflater=getLayoutInflater(); 
     View row=inflater.inflate(R.layout.row_listview_with_icon, parent, false); 
     TextView label=(TextView)row.findViewById(R.id.label); 

     ImageView icon=(ImageView)row.findViewById(R.id.icon); 

     final int m_pos = position; 
        label.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       ...    
      } 
     }); 
     icon.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       ...    
      } 
     }); 

     return(row); 
    } 
関連する問題