2013-03-10 63 views
0

我在一个活动中有两个listviews。我为每个适配器设置。listview onItemClick not firing

这是我有:

lv.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.custom_list_item_1, classesBradycardia)); 
      specialist.setAdapter(new ArrayAdapter<String>(this, 
        R.layout.custom_list_item_1, specialistBradycardia)); 
      lv.setOnItemClickListener(this); 

    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
// TODO Auto-generated method stub 
    String selectedVal = //((TextView) v).getText().toString(); 
      lv.getItemAtPosition(position).toString(); 
    Log.d(selectedVal, "it's in " + selectedVal); 
    final int result = 1; 
    Bundle extras = new Bundle(); 
    switch(v.getId()){ 
    case R.id.lvSpecificTest: 
     if(selectedVal.equals("Electrocardiogram")){ 
      Intent ecg = new Intent(this, ViewTest.class); 
      extras.putString("viewtest", "Electrocardiogram"); 
      ecg.putExtras(extras); 
      startActivityForResult(ecg, result); 

我把登录它。它显示所选项目,但不会进入下一个活动。我在这里错过了什么?

+0

“custom_list_item_1.xml”中的根布局是否具有“@ + id/lvSpecifciText”?并且'selectVal'实际上等于''心电图''(使用调试器)? – Sam 2013-03-10 20:30:36

+0

它只在我的主布局中有一个textview = @android:id/text1 – 2013-03-10 20:32:19

回答

1

它只有一个TextView = @android:ID /文本1

你的switch语句永远不会运行,因为该ID不匹配......

switch(v.getId()){ 
case R.id.lvSpecificTest: // Does not equal android.R.id.text1 

加法

在我的主布局中,我有2个列表视图,其中一个被命名为lvSpecificTest?

第二个参数v指的是行,即R.layout.custom_list_item_1,而不是ListView。第一个参数parent引用ListView。请尝试:

switch(parent.getId()){ 
case R.id.lvSpecificTest: 
+0

我有2个listviews,一个名为lvSpecificTest? – 2013-03-10 20:38:26

+0

哦,我明白了。所以我会把v改成父母。 – 2013-03-10 20:42:24

+0

Pal你真是个好老师!用于解释参数v和父项之间的关系。直到你解释,我才知道。非常感谢! – 2013-03-10 20:46:04