我有一個數組的列表,並通過適配器傳遞它來填充我的列表。
其實,我想爲點擊的項目設置一些顏色。
問題是,每當我點擊第一個項目時,第一個和最後一個項目都會獲得相同的背景顏色。
列表適配器第一個和最後一個ID衝突
代碼:Test.java
//To keep track of previously clicked textview
TextView last_clicked=null;
ListView lv=(ListView)findViewById(R.id.my_activity_list);
//My test array
String[] data={"one","two","three","four","five","six"};
list=new ArrayList<String>(data.length);
list.addAll(Arrays.asList(data));
//evolist is my custom layout
adapter= new ArrayAdapter<String>(c,R.layout.evolist,list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> ad, View v, int pos, long id){
//set black for other
if(last_clicked!=null)
last_clicked.setBackgroundColor(Color.BLACK);
//set red color for selected item
TextView tv=(TextView)v;
//I also tried TextView tv=(TextView)v.findViewById(R.id.tvo)
//I tried printing tv.getId() and noticed that both first and last had same IDs
tv.setBackgroundColor(Color.RED);
last_clicked=tv;
}
});
佈局:evolist.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tvo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@android:color/white"
android:padding="10dp"
android:textSize="20sp">
</TextView>
我在哪裏錯了,還是隻有我得到這種錯誤? (三星galaxyŸ二重奏; 2.3.7)
我不知道它爲什麼會發生,但如果它只是由於ID,嘗試給外部使用tv.setId()方法的ID。這可能會工作 –
@shreya shah:你可以嘗試這個片段和評論? – everlasto