3 つのテキストビューとチェックボックスを持つリストビューを作成し、BaseAdapter に配置しました。それがしなければならないことは、アイテムが「未読」ステータスにある場合、そのテキストビューをBOLDにすることです。しかし、私は2つの問題に遭遇しました。
- 既読、未読に関係なく、一番上の項目は常にBOLDです。
- スクロールすると、スクロールによってリロードされたアイテムが太字になり始めます
調べてみましたが、いいところが見つかりませんでした。誰かがアイデアを持っているなら、私を助けてくれませんか? 以下は getView() です。
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder viewHolder;
if(convertView == null){ // check if convertView exists
// get and inflate layout
view = layoutInflater.inflate(R.layout.row, null);
viewHolder = new ViewHolder();
viewHolder.tv1 = (TextView)view.findViewById(R.id.list_callerIDname);
viewHolder.tv2 = (TextView)view.findViewById(R.id.list_callerIDnumber);
viewHolder.tv3 = (TextView)view.findViewById(R.id.list_messageSentTime);
viewHolder.cb = (CheckBox)view.findViewById(R.id.checkBox1);
// get each CheckBox into cb_array for future use
this.cb_array[position] = (CheckBox)view.findViewById(R.id.checkBox1);
// use it as a tag
view.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder)view.getTag();
}
viewHolder.tv1.setText(this.callerIDnames[position]);
viewHolder.tv2.setText(this.callerIDnumbers[position]);
viewHolder.tv3.setText(this.messageSentTimes[position]);
// if message is unread, then make texts bold
if (messageRead_list[position] == false){
viewHolder.tv1.setTypeface(viewHolder.tv1.getTypeface(), Typeface.BOLD);
viewHolder.tv2.setTypeface(viewHolder.tv2.getTypeface(), Typeface.BOLD);
viewHolder.tv3.setTypeface(viewHolder.tv3.getTypeface(), Typeface.BOLD);
}
return view;
}