当前位置:   article > 正文

Listview 设置item点击改变背景以及文字颜色_android listview 选中项更换背景和图片

android listview 选中项更换背景和图片

由于项目需求需要点击左侧的listview中的item,右侧随着改变,例如下图是我实现的效果:

                             

今天记录一下,以便以后翻阅.左侧为listvie列表,右侧也为点击左侧listview中的item随着改变。现在主要记录一下左侧listview中点击item背景以及文字颜色的改变。主要有几点:

1、在MainActivity中设置listview的setOnItemClickListener监听 ,以下代码中,主要是调用productNameLisAdapter的两个方法以及对适配器及时更新数据

  1. productNameListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  2. @Override
  3. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  4. setReclassifyData(position);//设置listview点击时候右侧二级分类的数据
  5. productNameLisAdapter.setCurrentItem(position);
  6. productNameLisAdapter.setClick(true);
  7. productNameLisAdapter.notifyDataSetChanged();
  8. }
  9. });

2、设置ProductNameLisAdapter

  1. private int mCurrentItem=0;//选中项的下标
  2. private boolean isClick = false;//判断是否选中
  3. //判断初始进来选中的下标==当前的下标 如果i=0时设置背景、文字颜色、以及左侧的竖直tab
  4. if (mCurrentItem == i) {
  5. viewHolder.textViewProjectName.setTextColor(context.getResources().getColor(R.color.colorOrangeRed));
  6. viewHolder.textViewLine.setBackgroundColor(context.getResources().getColor(R.color.colorOrangeRed));
  7. viewHolder.linearLayoutProductNameList.setBackgroundColor(context.getResources().getColor(R.color.colorWhite));
  8. } else {
  9. viewHolder.textViewProjectName.setTextColor(context.getResources().getColor(R.color.colorBlack));
  10. viewHolder.textViewLine.setBackgroundColor(context.getResources().getColor(R.color.colorGray));
  11. viewHolder.linearLayoutProductNameList.setBackgroundColor(context.getResources().getColor(R.color.colorGray));
  12. }
  1. public void setCurrentItem(int currentItem) {
  2. this.mCurrentItem = currentItem;
  3. }
  4. public void setClick(boolean click) {
  5. this.isClick = click;
  6. }

网上有很多代码会设置判断  !isClick但是我代码中设置之后初始进来第一条item的状态是选中正确的,但是在点击item的时候其他状态并没有改变,所以我没有设置,参考的时候看自己的情况

以下为适配器的代码:

  1. public class ProductNameLisAdapter extends BaseAdapter {
  2. Context context;
  3. private List<ClassificationEntity.DataBean.GoodsCategoryListBean> list;
  4. private int mCurrentItem=0;
  5. private boolean isClick = false;
  6. public ProductNameLisAdapter(Context context, List<ClassificationEntity.DataBean.GoodsCategoryListBean> list) {
  7. this.context = context;
  8. this.list = list;
  9. }
  10. @Override
  11. public int getCount() {
  12. return list.size();
  13. }
  14. @Override
  15. public Object getItem(int position) {
  16. return list.get(position);
  17. }
  18. @Override
  19. public long getItemId(int position) {
  20. return position;
  21. }
  22. @Override
  23. public View getView(int i, View convertView, ViewGroup viewGroup) {
  24. ViewHolder viewHolder;
  25. if (convertView == null) {
  26. viewHolder = new ViewHolder();
  27. convertView = View.inflate(context, R.layout.item_project_name_list, null);
  28. viewHolder.textViewProjectName = convertView.findViewById(R.id.textViewProjectName);
  29. viewHolder.textViewLine = convertView.findViewById(R.id.textViewLine);
  30. viewHolder.linearLayoutProductNameList = convertView.findViewById(R.id.linearLayoutProductNameList);
  31. convertView.setTag(viewHolder);
  32. } else {
  33. viewHolder = (ViewHolder) convertView.getTag();
  34. }
  35. viewHolder.textViewProjectName.setText(list.get(i).getShort_name());
  36. if (mCurrentItem == i) {
  37. viewHolder.textViewProjectName.setTextColor(context.getResources().getColor(R.color.colorOrangeRed));
  38. viewHolder.textViewLine.setBackgroundColor(context.getResources().getColor(R.color.colorOrangeRed));
  39. viewHolder.linearLayoutProductNameList.setBackgroundColor(context.getResources().getColor(R.color.colorWhite));
  40. } else {
  41. viewHolder.textViewProjectName.setTextColor(context.getResources().getColor(R.color.colorBlack));
  42. viewHolder.textViewLine.setBackgroundColor(context.getResources().getColor(R.color.colorGray));
  43. viewHolder.linearLayoutProductNameList.setBackgroundColor(context.getResources().getColor(R.color.colorGray));
  44. }
  45. return convertView;
  46. }
  47. public class ViewHolder {
  48. public TextView textViewProjectName, textViewLine;
  49. LinearLayout linearLayoutProductNameList;
  50. }
  51. public void setCurrentItem(int currentItem) {
  52. this.mCurrentItem = currentItem;
  53. }
  54. public void setClick(boolean click) {
  55. this.isClick = click;
  56. }
  57. }

在配上item_project_name_list 的布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/linearLayoutProductNameList"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:orientation="horizontal">
  7. <TextView
  8. android:id="@+id/textViewLine"
  9. android:layout_width="2dp"
  10. android:layout_height="match_parent"
  11. android:background="@color/colorOrangeRed" />
  12. <LinearLayout
  13. android:layout_width="match_parent"
  14. android:layout_height="match_parent"
  15. android:orientation="vertical">
  16. <TextView
  17. android:id="@+id/textViewProjectName"
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:layout_gravity="center"
  21. android:gravity="center"
  22. android:padding="10dp"
  23. android:text="@string/textview_phone_card"
  24. android:textColor="@color/colorOrangeRed" />
  25. <TextView style="@style/MyDivider" />
  26. </LinearLayout>
  27. </LinearLayout>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/170755
推荐阅读
相关标签
  

闽ICP备14008679号