我有列表項目有兩個textview和一個imageview.I充氣列表ArrayAdapter.Everything工作正常,除了更改列表項目顏色click.I在我的22項列表顯示。主要是在屏幕上顯示10個項目,並獲得滾動其他項目。現在我的問題是,當我點擊0-9之間的單個項目(最初的10個項目)項目單擊時正確更改其顏色,但是當我滾動並單擊對於位置大於9的項目(在最初的10個項目之後)我的活動崩潰了。我指的是http://www.mail-archive.com/[email protected]/msg09740.html鏈接編寫的代碼for loop
。幫助我擺脫此問題。任何建議或解決方案將高度讚賞.Thanx提前。獲取問題設置列表視圖項目的顏色
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); // to hide the virtual keyboard
setContentView(R.layout.defect_pic_listview);
try{
adapter = new MyArrayAdapter(this,makeList());
setListAdapter(adapter);
adapter.notifyDataSetChanged();
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// Toast.makeText(getApplicationContext(), "Item "+position+" is clicked",
// Toast.LENGTH_SHORT).show();
System.out.println("position"+position);
int first = getListView().getFirstVisiblePosition();
System.out.println("first="+first);
int last = getListView().getLastVisiblePosition();
System.out.println("last="+last);
int total = last - first;
System.out.println("total="+total);
if(getListView().isItemChecked(position)){
for(int i = 0 ; i <= last ; i++){
System.out.println("i="+i);
if(first+i == position){
getListView().getChildAt(i).setBackgroundColor(Color.GREEN);
System.out.println("l1="+getListView());
// l.getItemAtPosition(i);
// System.out.println("l position"+l);
}
else{
getListView().getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
System.out.println("l2="+getListView());
}
}
}
else{
getListView().getChildAt(position - first).setBackgroundColor(Color.TRANSPARENT);
}
}
});
}
catch(Exception e){
Log.d("error",e.getMessage());
}
}
您可以發佈代碼MyArrayAdater.class? – Hiral 2012-01-27 10:44:04
下次,請編輯您的原始問題。請不要兩次問同一件事。 – Kev 2012-02-16 21:26:18