-1
我有一個包含8個項目的listView。每個項目都包含一個單一按鈕。我希望當每個列表項目點擊該項目的背景變化。我使用baseAdapter,除了當第一個項目(零位置)被點擊時,所有的東西都是正確的,然後背景沒有改變。這是我的適配器:BaseAdapter與OnClickListener無法正常工作
class MainListAdapter extends BaseAdapter implements View.OnClickListener {
ViewHolder viewHolder ;
int SelectedItem = 55 ;// dummy integer
Button[] buttons = new Button[8];
@Override
public int getCount() {
return MainListTitle.size();// array of string
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view==null){
// inflate the layout
view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.main_list_item, viewGroup ,false);
// well set up the ViewHolde
viewHolder = new ViewHolder();
viewHolder.Title = (Button) view.findViewById(R.id.mainListButton);
viewHolder.Title.setText(MainListTitle.get(i));
viewHolder.Title.setId(i);
buttons[i]=viewHolder.Title ;
viewHolder.Title.setOnClickListener(this);
//store the holder with the view.
view.setTag(viewHolder);
}else{
// we've just avoided calling findViewById() on resource everytime
// just use the viewHolder
viewHolder = (ViewHolder) view.getTag();
}
return view;
}
@Override
public void onClick(View view) {
// Toast.makeText(getApplicationContext(),view.getId()+"",Toast.LENGTH_SHORT).show();
switch (view.getId()){
case 0:
onButtonSelcted(0);
break;
case 1:
onButtonSelcted(1);
break;
case 2:
onButtonSelcted(2);
break;
case 3:
onButtonSelcted(3);
break;
case 4:
onButtonSelcted(4);
break;
case 5:
onButtonSelcted(5);
break;
case 6:
onButtonSelcted(6);
break;
case 7:
onButtonSelcted(7);
break;
}
}
class ViewHolder{
Button Title ;
}
private void onButtonSelcted(int position){
if (SelectedItem == position){}
else {
buttons[position].setBackgroundColor(getResources().getColor(R.color.white));
if (SelectedItem != 55){
buttons[SelectedItem].setBackgroundColor(getResources().getColor(R.color.material_blue_grey_900));
}
SelectedItem = position ;
}
}
是否要更改ListView中的按鈕?你爲什麼創建 - 按鈕[]按鈕=新按鈕[8];? 將R.layout.main_list_item添加到問題中。 –