gpt4 book ai didi

java - 在listviewitem中设置颜色

转载 作者:行者123 更新时间:2023-11-29 21:50:35 25 4
gpt4 key购买 nike

我想使用以下代码为 ListView 中的项目着色:

holder.txtPosition = (TextView)row.findViewById(R.id.txtPosition);holder.txtPosition.setTextColor(0xFF00CC00);.

它工作得很好但是:它也为每十分之一的项目着色。例如:我为第一个项目设置了颜色,所以每第十个项目也会获得颜色。

如果我向下滚动并再次向上滚动,会有更多颜色。

在这张图片中,我只对第一个“用户投票”文本进行了着色,然后非常快速地向下滚动并滚动回顶部。

The green Text

这是什么魔法?

import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class List extends ArrayAdapter<ListItem>{

Context context;
int layoutResourceId;
ListItem data[] = null;

public List(Context context, int layoutResourceId, ListItem[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
WeatherHolder holder = null;
ListItem entry = data[position];

if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);

holder = new WeatherHolder();
holder.txtVideos = (TextView)row.findViewById(R.id.txtVideos);
holder.txtPosition = (TextView)row.findViewById(R.id.txtPosition);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.txtcomments = (TextView)row.findViewById(R.id.txtcomment);

row.setTag(holder);

if (entry.fav){
//row.setBackgroundColor(0xFFfcf6bb);
}
}
else
{
holder = (WeatherHolder)row.getTag();
}
holder.txtTitle.setText(entry.teilnehmer);
holder.txtPosition.setText(entry.position);

int num = Integer.parseInt(entry.videos);
if (num == 0 || num > 1){
holder.txtVideos.setText(entry.videos + " Videos");
} else {
holder.txtVideos.setText(entry.videos + " Video");
}

if (holder.txtPosition.getText().equals("Ausgeschieden")){
holder.txtPosition.setTextColor(0xFFFF0000);
} else if(holder.txtPosition.getText().equals("User-Voting")){
holder.txtPosition.setTextColor(0xFF00CC00);
}

num = Integer.parseInt(entry.comment);
if (num == 0 || num > 1){
holder.txtcomments.setText(entry.comment + " Kommentare");
} else {
holder.txtcomments.setText(entry.comment + " Kommentar");
}
return row;
}

static class WeatherHolder
{
TextView txtTitle;
TextView txtVideos;
TextView txtPosition;
TextView txtcomments;
}
}

最佳答案

您正在回收 ListView 元素(这是一件好事)。但是,当这样的 View 传递给您的 getView 方法时,它仍处于它持有的最后一个元素的状态;因此,如果您指定 setColor,此值也将应用于将注入(inject)容器的下一个文本。因此,当您重新填充回收 View 时,您还应该重置颜色定义:

if (holder.txtPosition.getText().equals("Ausgeschieden")) {
holder.txtPosition.setTextColor(0xFFFF0000);
} else if (holder.txtPosition.getText().equals("User-Voting")) {
holder.txtPosition.setTextColor(0xFF00CC00);
} else {
holder.txtPosition.setTextColor(R.color.your_default);
}

关于java - 在listviewitem中设置颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14500679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com