3

我创建了一个ListView带有自定义数组适配器的MyObject. 的一个实例MyObject包含 aString和 a 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

4

1 回答 1

1

如果是,您将希望恢复为默认粗体样式(将可能回收的默认样式恢复为默认样式(对于不是时的情况),可能设置为不加粗体):isSetted()falseViewconvertViewnull

if(values.get(position).isSetted()){
    textView.setTypeface(null);
} else {
    textView.setTypeface(Typeface.BOLD);
}
于 2012-05-10T16:58:32.753 回答