我做了一個listview,它有三個textview和一個複選框,並將其放入BaseAdapter。如果某件商品的'未讀'狀態如此,則需要做的事情是,然後將其文字視圖大膽。但是,我遇到了兩個問題。android:getView()問題 - 滾動時更改項目
- 首選項總是大膽不管它被讀取還是未讀。
- 如果我不滾動,然後通過滾動開始重新裝載項目要大膽
我研究了一下,但沒找到什麼好東西給我。如果有人有想法,你能幫我嗎?下面是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;
}
我只是解決了這個問題。我改變的只是將'null'參數放入'setTypeface'的第一個參數中,例如'tv1.setTypeface(null,Typeface.NORMAL)'。將它設爲粗體時沒有關係,但確實使其樣式恢復正常。 我感謝您的幫助。謝謝你們!附:除非發生其他事情,否則我會將其作爲答案。 – June 2011-06-07 03:51:13