当前位置:   article > 正文

ListView单行选中变色_listview 选择发生变化

listview 选择发生变化

网上找了很多ListView选中后变色的文章,但都是什么字体设置变色选择器,要不就是ListView设置变色器,单行选中变色的始终找不到!


甚至还有人说用ListView的onItemSelectedListener方法,可是我用了这个方法,居然一点反应都没有好不好!

最后才看到有人说这个方法是针对有实体键盘的,用实体键盘的上下键才会触发这个事件~!

现在还有几个手机用实体键盘啊(老年机和个人爱好收藏者除外);


这个功能我纠结了一两天才搞定,一定要记录下来,大家共勉!这个才是真的单选,非多选,非点击变色后又恢复


这个就是效果图了,主要原理就是在adapter里面比较资源,然后在外面刷新Adapter,代码如下

1.主MainActivity.java

  1. package cq.cake.listselect;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.AdapterView;
  6. import android.widget.ListView;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. public class MainActivity extends Activity {
  10. private List<String> mDatas;
  11. private ListView listView;
  12. private ListViewSelectAdapter adapter;
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_main);
  17. initView();
  18. initData();
  19. initEvent();
  20. }
  21. private void initView() {
  22. listView = (ListView) findViewById(R.id.listView_select);
  23. }
  24. private void initData() {
  25. mDatas = new ArrayList<>();
  26. for (int i = 'A'; i <'z' ; i++) {
  27. mDatas.add((char)i+"");
  28. }
  29. adapter = new ListViewSelectAdapter(this, mDatas);
  30. listView.setAdapter(adapter);
  31. }
  32. private void initEvent() {
  33. listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  34. @Override
  35. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  36. notifyTextColor(position);
  37. }
  38. });
  39. }
  40. /**
  41. * 选中变色,一定要刷新adapter
  42. *
  43. * @param position
  44. */
  45. public void notifyTextColor(int position) {
  46. adapter.setSelectPosition(position);
  47. adapter.notifyDataSetChanged();
  48. }
  49. }

2。还有就是Adapter了


  1. package cq.cake.listselect;
  2. import android.content.Context;
  3. import android.graphics.Color;
  4. import android.widget.TextView;
  5. import java.util.List;
  6. /**
  7. * My Application -- cq.cake.listselect
  8. * Created by Small Cake on 2016/1/20 10:12.
  9. */
  10. public class ListViewSelectAdapter extends Xadapter<String> {
  11. private int mPosition;
  12. public ListViewSelectAdapter(Context context, List<String> listDatas) {
  13. super(context, listDatas, R.layout.item_text1);
  14. }
  15. @Override
  16. public void convert(ViewHolder holder, String s) {
  17. holder.setText(R.id.text,s);
  18. TextView view = holder.getView(R.id.text);
  19. //这里的listDatas就是同过构造函数传递进来的集合,通过比较值来改变颜色
  20. if(listDatas.get(mPosition).equals(s)){
  21. view.setTextColor(Color.parseColor("#ff00ff"));
  22. }else{
  23. //没有选中的行都变灰色
  24. view.setTextColor(Color.parseColor("#8a8a8a"));
  25. }
  26. }
  27. public void setSelectPosition(int position){
  28. this.mPosition = position;
  29. }
  30. }

好了,就只需这里设置一下就Ok~!

源代码一并奉上,方便大家学习:ListView单选文字变色 


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

闽ICP备14008679号