【发布时间】:2015-08-31 06:35:02
【问题描述】:
我有一个包含 8 个项目的 listView。每个项目都包含一个单一按钮。我希望当列表的每个项目单击该项目的背景时会发生变化。我使用 baseAdapter 并且所有事情都是正确的,除非单击第一项(零位置),然后背景没有改变。这是我的适配器:
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里面的按钮吗?你为什么要创建 - Button[] 按钮 = new Button[8];?将 R.layout.main_list_item 添加到问题中。
标签: android onclicklistener baseadapter