ListView和RecyclerView列表点击变换状态
ListView
//条目点击
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//点击位置-传给适配器
listAdapter.change(i);
Log.i("yu", "onItemClick: "+index);
//适配器刷新
listAdapter.notifyDataSetChanged();
}
});
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder=null;
if (view==null) {
holder=new ViewHolder();
view=layoutInflater.inflate(R.layout.layout_list2,null);
holder.textView=view.findViewById(R.id.two_list);
view.setTag(holder);
}else{
holder= (ViewHolder) view.getTag();
}
holder.textView.setText(lists.get(i));
if (index== i) {
Log.i("yu", index+"被点击: ");
view.setBackgroundColor(Color.BLUE);
holder.textView.setTextColor(Color.RED);
}else{
view.setBackgroundColor(Color.WHITE);
holder.textView.setTextColor(Color.BLACK);
}
return view;
}
public void change(int position){
//更新点击位置
if(position != index){
index = position;
notifyDataSetChanged();
}
}
RecyclerView
适配器:
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
holder.textView.setText(lists.get(position).getName());
if(i== position){
Toast.makeText(context, ""+lists.get(position), Toast.LENGTH_SHORT).show();
holder.textView.setBackgroundResource(R.drawable.shape_yes);
String s = "√ "+holder.textView.getText().toString();
holder.textView.setText(s);
holder.textView.setTextColor(Color.RED);
}else{
holder.textView.setBackgroundResource(R.drawable.shape_no);
holder.textView.setTextColor(Color.BLACK);
}
//点击事件更新位置
holder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
i=position;
notifyDataSetChanged();
}
});
}