2012-10-19 4 views
0

내 활동은 ListView를 사용합니다. 사용자가 아이템을 길게 누르면 X를, 정상적으로 탭하면 Y를하고 싶습니다.onItemClick 및 onCreateContextMenu가 호출되지 않도록하는 방법

mListView = (ListView) findViewById(android.R.id.list); 
registerForContextMenu(mListView); 
mListView.setOnItemClickListener(this); 

제가 보는 동작은 항목의 사용자 긴 탭, 인, onCreateContextMenu()와 onItemClick (모두)가 호출 될 때이다 :처럼 내에서 onCreate()는 코드가 포함되어 있습니다.

어떻게 이것을 피할 수 있습니까?

답변

0

이보십시오, 나는 그것을 테스트하고 상황에 맞는 메뉴는 길게 누르면과 온 클릭 만 목록보기를 클릭 항목 이벤트라고는 장소

package com.example.listview; 

import android.app.ListActivity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.ContextMenu; 
import android.view.ContextMenu.ContextMenuInfo; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 

public class ListViewExampleActivity extends ListActivity { 

static final String[] STATES = new String[] { "Haryana", "Punjab", "Rajasthan", 
     "Maharashtra", "Madhya Pradesh", "Kerala", "Jammu","Bihar","Karnataka" , "TamilNadu", 
       "Uttar Pradesh" ,"Gujrat"}; 
View listColor; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setListAdapter(new ArrayAdapter<String>(this, R.layout.main,STATES)); 

    ListView listView = getListView(); 
    listView.setTextFilterEnabled(true); 

    listView.setBackgroundColor(getTitleColor()); 
    registerForContextMenu(listView); 
    listView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      if(listColor!=null){ 
       listColor.setBackgroundColor(Color.BLACK); 
       listColor=view; 
      }else{ 

       listColor=view; 

      } 
      Log.i("called", "item click"); 
      listColor.setBackgroundColor(Color.BLUE); 
      //on click of any item the item name will be shown in toast 
      Toast.makeText(getApplicationContext(), 
      ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 

} 
@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
    ContextMenuInfo menuInfo) { 
    Log.i("called", "Context menu"); 
    Toast.makeText(getApplicationContext(), 
      "Context menu", Toast.LENGTH_SHORT).show(); 
} 
} 
에게 소요
관련 문제