2014-12-03 180 views
0

我遇到了使用listview的问题,当我点击它时什么都没有发生。我想为它点击列表视图项目来做一个敬酒,所以我知道它正在被点击。我一直在努力/研究一段时间,一无所获。有人会介意看看我是否错过了我刚刚忽略的一些东西吗?提前谢谢了!listView项点击事件没有触发

这里是我的类:

public class MyCar extends Activity { 

/** 
* Called when the activity is first created. 
*/ 
public ListView mylistView; 
String carInfo; 
private ArrayAdapter<String> mylistAdapter; 
ArrayList<String> arrayListCar = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_mycar); 
    mylistView = (ListView) findViewById(R.id.listView); 
    arrayListCar = new ArrayList<String>(); 
    //Just had to remove setting this adapter 2 times. Took out line below to fix. 
    mylistView.setAdapter(mylistAdapter); 

    mylistView.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
           long id) { 

      String item = ((TextView) view).getText().toString(); 

      Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show(); 

     } 
    }); 
} 

@Override 
protected void onStart() { 
    // TODO Auto-generated method stub 
    super.onStart(); 
    carInfo = trySomethin(); 
    fillList(); 
} 

public void fillList() { 
    String make = ""; 
    String model = ""; 

    String[] pieces = carInfo.split("\""); 
    make = pieces[3]; 
    model = pieces[7]; 

    ArrayList<String> carList = new ArrayList<String>(); 
    carList.add(make + " " + model); 
    // Create ArrayAdapter using the car list. 
    mylistAdapter = new ArrayAdapter<String>(MyCar.this, android.R.layout.simple_list_item_single_choice, carList); 

    mylistView.setAdapter(mylistAdapter); 
    mylistAdapter.notifyDataSetChanged(); 
} 

}

+1

你没有看到“吐司”? – Raghunandan 2014-12-03 05:36:00

+0

是的,我没有看到烤面包。当我点击它时,列表视图保持在那里,我可以点击它10次,什么也没有发生。 – Shawn 2014-12-03 05:36:16

+0

哇,我很抱歉浪费时间,我没有看到我将适配器设置为mylistView 2次。删除了onCreate中的一个,现在可以使用。感谢您的时间! – Shawn 2014-12-03 05:42:34

回答

1
Try this 


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

      // ListView Clicked item index 
      int itemPosition  = position; 

      // ListView Clicked item value 
      String itemValue = (String) listView.getItemAtPosition(position);    
      // Show Alert 
      Toast.makeText(getApplicationContext(), 
       "Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG) 
      .show(); 

      } 
     }); 
2

,如果你有ListView项的任何元素改变这个为他们

android:focusable="false"      

,如果你正在改变任何元素运行时可见性,每次更改其可见性时,都必须以编程方式处理焦点。