ListView改变里面TextView的字体颜色

方法1(ps:这个挺好用的)

  • 先从ListView属性出发,设置它为单选 (一定要设置)
//设置它为单选
android:choiceMode="singleChoice"
  • ListView的布局文件xml

    
  • 设置它的item布局的selector:


    


  • drawable_list_view_text的布局文件(网上有好多给drawable文件里面设置多余属性android:state_activated="true"这个就够了)


    
    

  • 给ListView一个默认选项(setItemChecked(int position,boolean,checked))
    setItemChecked(int position,boolean)
//给ListView一个默认选项
        listView.setItemChecked(0,true);

方法2

在Adapter里面一定要写上这句话

//设置选中效果
        if (selectedPosition == position){
            tvContent.setTextColor(Color.RED);
        }else {
            tvContent.setTextColor(Color.BLACK);
        }
  • 在Activity或Fragment里面调用一句话
//刷新
 lvdapter.notifyDataSetChanged();
  • Adapter源码,Adapter继承BaseAdapter
public class ClassificationFragmentListViewAdapter extends BaseAdapter{

    Context context;
    String[] list;

    private int selectedPosition = -1;
    public void setSelectedPosition(int position) {
        selectedPosition = position;
    }

    public ClassificationFragmentListViewAdapter(Context context, String[] list) {
        this.context = context;
        this.list = list;
    }

    /*
     *listView中显示的数据个数
     */

    @Override
    public int getCount() {
        return list.length;
    }

    /*
     *根据position获取一个listView中一个item对象
     */
    @Override
    public Object getItem(int position) {
        return list[position];
    }

    /*
     *根据position获取一个listView中一个item位置
     */
    @Override
    public long getItemId(int position) {
        return position;
    }

    /*
     *绘制视图--1.创建视图,2.初始化控件,3.填充数据
     */
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //第一步 创建视图 建一个XML文件
        //实例化View对象
        View view = LayoutInflater.from(context).inflate(R.layout.item_list_view_classification, null);
        //第二步
        //初始化控件
        TextView tvContent = (TextView) view.findViewById(R.id.tv_item_list_view_classif);
        //第三步 先获取数据
        //通过position获取要填充的数据(list的item的值)
        String contrnt =list[position];
        //设置选中效果
        if (selectedPosition == position){
            tvContent.setTextColor(Color.RED);
        }else {
            tvContent.setTextColor(Color.BLACK);
        }
        //将数据显示在控件上
        tvContent.setText(contrnt);
        return view;
    }

}

你可能感兴趣的:(ListView改变里面TextView的字体颜色)