このコードでListViewのアイテムに色を付けたい:
holder.txtPosition = (TextView)row.findViewById(R.id.txtPosition);
holder.txtPosition.setTextColor(0xFF00CC00);
。
それはうまく機能していますが、10個ごとのアイテムにも色が付いています。例:最初のアイテムの色を設定したので、10個ごとのアイテムにも色が付けられます。
下にスクロールしてもう一度上にスクロールすると、さらに多くの色が表示されます。
この画像では、最初の「ユーザー投票」テキストに色を付けてから、非常に速く下にスクロールして、上にスクロールして戻しました。
これはどんな魔術ですか?
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;
}
}