gpt4 book ai didi

android - 在运行时更改 ListView 中的行项目字体

转载 作者:太空狗 更新时间:2023-10-29 14:27:35 25 4
gpt4 key购买 nike

我使用 MyObject 的自定义数组适配器创建了一个 ListViewMyObject 的一个实例包含一个 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

最佳答案

如果 isSetted()false,您将需要恢复到默认的 bold 样式(恢复到默认样式是一个潜在的回收的View(当convertView不是null时)谁可以不加粗设置:

if(values.get(position).isSetted()){
textView.setTypeface(null);
} else {
textView.setTypeface(Typeface.BOLD);
}

关于android - 在运行时更改 ListView 中的行项目字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10538368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com