Android ListView重写BaseAdapter如何改变指定item中的TextView的颜色?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ListView重写BaseAdapter如何改变指定item中的TextView的颜色?相关的知识,希望对你有一定的参考价值。

例如,要每隔两个item就将其中的TextView变成红色,如何在BaseAdapter中重写?

参考技术A 在类中定义一个类 继承BaseAdapter
然后重写getView
public View getView(int position, View convertView,
ViewGroup parent)
position 就是下标 每隔两个 就是 position%3==2
下面是例子:--------------------------------------------------------------------------------------
class MyTextAdapter extends BaseAdapter
//自定义Adapter以内部类形式存在于MainActivity中,方便访问MainActivity中的各个变量,特别是texts数组(你要显示的数组)
private Context context;//用于接收传递过来的Context对象
public MyImgAdapter(Context context)
super();
this.context = context;


@Override
public int getCount()
return texts.length;


@Override
public Object getItem(int position)
return position;


@Override
public long getItemId(int position)
return position;


@Override
public View getView(int position, View convertView, ViewGroup parent)
//针对每一个数据创建一个TextView实例,
TextView tv = new TextView(context);//针对外面传递过来的Context变量,
tv.setLayoutParams(new LayoutParams(80, 80));//设置大小为80*80
tv.setText(texts[position]);//设置要显示的内容
if(position%3==2)//第三个变颜色
tv.setTextColor(Color.RED);
else
tv.setTextColor(Color.BLACK);

return tv;


本回答被提问者和网友采纳

Fragment

1 ListView:是一个AdapterView:UI控件,可以用于展示一组数据(使用适配器)

  适配器控件 : Spinner ListView

  列表:每一行叫做item

  setEmptyView(View);--》当ListView中没有数据展示,展示指定的view控件

2 适配器:Adapter:接口

          BaseAdapter:抽象类(适配器的半成品:有4个抽象方法)

          系统提供好的适配器:ArrayAdapter

                                     SimpleAdapter

          自定义适配器: 自定义类 继承BaseAdapter, 重写4个方法

          getCount(int item)-->int ,item 的个数.就是listView要展示的item的总量

                               数据源.size(),length;

          getItem(int position)-->Object,根据postion,获取对应item的对象。
                               数据源.get(position);
          getItemId(int position)-->long,根据position,获取itme的id。
                                position


          getView(int position,View convertView,ViewGroup parent)-->View
                     step1:先判断convertView是否为空
                         如果为空:
                         A通过布局填充器,将item的布局xml,转为view对象
                         B创建ViewHolder对象
                         C为viewholder对象的属性(就是子控  

                               件)=convertView.findViewById(R.id.xxx);                         
                         D,convertView.setTag(viewhoder);

                      step2:不为空
                          viewhoder=convertView.getTag();

                      step3:根据postion获取数据源,设置到viewhoder的子控件上。
                      step4:返回convertView

3 监听器:

ListView:  

          onItemClickListener

          onItemLongClickListener

Spinner:

           onItemSelectedListener

4 ListView的优化

A:ListView中的属性:android:layout_height="固定值/match_parent",不要写  

                               wrap_content,防止多次调用getView()方法。          

B:ListView自身的优化机制:利用convertView:复用view

                                 第一屏幕展示的每一个item,都是用布局填充器,转换xml-->view
                                 当有item滚出,就存在view的复用。--->convertView


             判断convertView是否为空:
                为空:当前不存在可以复用的view对象。(第一屏幕)
                         view = layoutInflater.infalte(R.layout.xxx,null)
                否则:存在复用-->convertView
                         view = convertView

 

     

C:  为了减少findViewById(),方法的调用次数,需要创建一个ViewHolder的内部类,用于将        view上的子控件,和view绑定到一起。

    为了通过ViewHolder的属性,来保存当前的view的子控件。

     

      

 

  

以上是关于Android ListView重写BaseAdapter如何改变指定item中的TextView的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

Fragment

Android中ListView下拉刷新的实现

Android中ListView下拉刷新的实现

Android控件ListView获取item中EditText值

Android控件ListView获取item中EditText值

ListView之在Activity里面重写item里面的事件