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的颜色?的主要内容,如果未能解决你的问题,请参考以下文章
Android控件ListView获取item中EditText值