我制作了一个包含三个文本视图和一个复选框的列表视图,并将其放入 BaseAdapter。它必须做的是,如果一个项目处于“未读”状态,则使其 textviews 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;
}