项目背景:支付时选择金额,点击切换当前按钮颜色、字体等
activity中item的点击事件,利用点击item返回的view作为参考,每次点击将前一次点击的view设置成默认样式,再将该次点击的样式设置为新的样式即可
int Position = -1;
View OldView = null;
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (OldView == null){
OldView = view;
ChangeNewView(view , true);
}else{
ChangeNewView(OldView , false);
ChangeNewView(view , true);
OldView = view;
}
Position = position; //记录点击条目,作为变量做其他操作
}
});
private void ChangeNewView(View view , Boolean isNew){
TextView tv = (TextView) view.findViewById(R.id.recharge_item_tv_1);
TextView tv2 = (TextView) view.findViewById(R.id.recharge_item_tv_2);
if (isNew) {
view.findViewById(R.id.recharge_ll).setBackgroundResource(R.drawable.shape); //修改样式,自定义文件设置
tv.setTextColor(getResources().getColor(R.color.white));
tv2.setTextColor(getResources().getColor(R.color.white));
}else{
view.findViewById(R.id.recharge_ll).setBackgroundResource(R.drawable.shape2); //修改样式,自定义文件设置
tv.setTextColor(getResources().getColor(R.color.text_gary));
tv2.setTextColor(getResources().getColor(R.color.text_gary));
}
}
以上是其中一种方式,只修改特定的两个view样式
第二种点击更改的方式,现在需求为默认选中一条作为默认选项
private int defItem;//声明默认选中的项
/**
适配器中添加这个方法
默认选中项
*/
public void setDefSelect(int position) {
this.defItem = position;
notifyDataSetChanged();
}
//在getView方法中添加修改item样式的判断
if (defItem == position){
viewHolder.recharge_ll.setBackgroundResource(R.drawable.shape);
viewHolder.recharge_item_tv_1.setTextColor(context.getResources().getColor(R.color.white));
viewHolder.recharge_item_tv_2.setTextColor(context.getResources().getColor(R.color.white));
}else{
view.findViewById(R.id.recharge_item_ll).setBackgroundResource(R.drawable.shape2);
viewHolder.recharge_item_tv_1.setTextColor(context.getResources().getColor(R.color.text_gary));
viewHolder.recharge_item_tv_2.setTextColor(context.getResources().getColor(R.color.text_gary));
}
在activity中的使用,直接调用 adapter.setDefSelect(0) //设置默认选中第一项
listview.setAdapter(adapter);
adapter.setDefSelect(0);//设置默认选中第一项
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
adapter.setDefSelect(position);//更改选中项
Position = position; //当默认为第一条时,设置默认Position = 0 即可
}
});