2017-02-18 75 views
0

我運行這個代碼打擊, 和setOnItemClickListener()運行良好, 但選定的事件不能被觸發。 有什麼不對或者ListView無法綁定setOnItemSelectedListener? 有人可以幫我嗎?如何在ListView中觸發setOnItemSelectedListener?

public class MainActivity extends Activity{ 
private TextView selection; 
private static final String[] items={"lorem", "ipsum", "dolor", 
     "sit", "amet", 
     "consectetuer", "adipiscing", "elit", "morbi", "vel", 
     "ligula", "vitae", "arcu", "aliquet", "mollis", 
     "etiam", "vel", "erat", "placerat", "ante", 
     "porttitor", "sodales", "pellentesque", "augue", "purus"}; 

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.activity_main); 

    ListView listView = (ListView) findViewById(R.id.list); 
    ArrayAdapter aa = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,items); 
    listView.setAdapter(aa); 
    listView.setChoiceMode(CHOICE_MODE_MULTIPLE); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      selection.setText(items[position]); 
     } 
    }); 
    listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(MainActivity.this,items[position],Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 

    selection=(TextView)findViewById(R.id.selection); 
    } 
} 
+0

刪除'setOnItemSelectedListener'並看到一次 – Redman

+0

@Redman它的工作,並觸發點擊事件,但我只是想觸發選定的事件 – litbear

+0

我不認爲你想要onItemSelected偵聽器。正常的點擊監聽器可以防止這種情況發生。 http://theopentutorials.com/tutorials/android/listview/android-multiple-selection-listview/ –

回答

0

我猜你正在服用關於保留選擇的項目,因爲它是,如果這樣的話在你的XML列表視圖部分添加下列行

android:choiceMode="singleChoice" 
android:listSelector="#666666" 

您的活動應該是這樣的

一些事情
public class MainActivity extends Activity{ 
private TextView selection; 
private static final String[] items={"lorem", "ipsum", "dolor", 
     "sit", "amet", 
     "consectetuer", "adipiscing", "elit", "morbi", "vel", 
     "ligula", "vitae", "arcu", "aliquet", "mollis", 
     "etiam", "vel", "erat", "placerat", "ante", 
     "porttitor", "sodales", "pellentesque", "augue", "purus"}; 

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.activity_main); 

    ListView listView = (ListView) findViewById(R.id.list); 
    selection=(TextView)findViewById(R.id.selection); 
    ArrayAdapter aa = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,items); 
    listView.setAdapter(aa); 
    listView.setChoiceMode(CHOICE_MODE_MULTIPLE); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      selection.setText(items[position]); 
       Toast.makeText(MainActivity.this,items[position],Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    } 
} 

你也可以跟隨其他方法在here

+0

'android:choiceMode =「singleChoice」'會衝突到'listView.setChoiceMode (CHOICE_MODE_MULTIPLE)',我的關鍵點是「爲什麼'setOnItemSelectedListener()'不被調用,即使我刪除點擊偵聽器」 – litbear

+0

看看http://stackoverflow.com/a/2454430/6478047 – Redman

相關問題