2017-02-18 80 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

相关问题