我使用ListView
的自定义数组适配器创建了MyObject
。 MyObject
的一个实例包含String
和boolean
。当我想象ListView
我的所有项目都以粗体显示时,如果您点按其中一项,则会启动新的Activity
。我想要做的是每次按下并返回到ListView
时,您可以看到您单击的项目不是粗体。这是我的自定义ArrayAdapter
:
public class MyAdapter extends ArrayAdapter<MyObject> {
private final Context context;
private final ArrayList<MyObject> values;
public MyAdapter(Context context, ArrayList<MyObject> values) {
super(context, R.layout.my_item, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(convertView == null){
convertView = inflater.inflate(R.layout.my_item, parent, false);
}
TextView textView = (TextView) convertView.findViewById(R.id.itemName);
textView.setText(values.get(position).getMyObjectName());
if(values.get(position).isSetted()){
textView.setTypeface(null, 0);
}
return convertView;
}
}
在我的Activity
中我放了:
@Override
protected void onResume() {
super.onResume();
adapter.notifyDataSetChanged();
}
并且代码实际上有效,但是有一个问题:在您点击某些项目后,其他未开发的项目在您回来时变得不大胆!这是随机发生的!为什么会这样?
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String item = objList.get(position).getMyObjectName();
objList.get(position).setSetted(true);
to_ans.putExtra("ItemName", item);
startActivity(to_ans);
}
项目的boolean
值最初都设置为false
。
答案 0 :(得分:1)
如果isSetted()
为false
,您将需要恢复为默认的粗体样式(要恢复为潜在回收的默认样式View
(对于如果convertView
不是null
),可以设置为不加粗体的情况):
if(values.get(position).isSetted()){
textView.setTypeface(null);
} else {
textView.setTypeface(Typeface.BOLD);
}