android - 在listview android studio中实现收藏按钮
问题描述
我正在尝试从过去五天开始在 ListView 中实现最喜欢的按钮。我创建了一个 ListView,它获取当前的 textview 文本并将其保存在 ArrayList(名称)中,如果数据已经存在,则将其删除,效果很好,但是当我关闭应用程序时,ArrayList 变空我想保存数组列表在偏好中。
数组声明:
ArrayList<String> names = new ArrayList<>();
下面是代码
favoritebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick( View v) {
if (!names.contains(textView_name.getText())){
names.add((String) textView_name.getText());
for (int i=0; i<names.size(); i++) {
System.out.println(names.get(i));
favoritebutton.setBackgroundResource(R.drawable.fav_checked);
}
}
else {
System.out.println(textView_name.getText() + " is already present in the Array at index " + names.indexOf(textView_name.getText()));
int currentIndex = names.indexOf(textView_name.getText());
names.remove(currentIndex);
for (int i=0; i<names.size(); i++) {
System.out.println(names.get(i));
favoritebutton.setBackgroundResource(R.drawable.star_off);
}
}
}
});
解决方案
每次更新后,您必须将该列表保存在首选项中,您可以使用 Gson lib 将数组列表转换为 JsonArray 并将 JsonArray 转换为 Arraylist,这将对您有所帮助...
String str = fetchFromPref();
ArrayList<String> names = covertToArrayListFromJSOnString(str);
favoritebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick( View v) {
if (!names.contains(textView_name.getText())){
names.add((String) textView_name.getText());
for (int i=0; i<names.size(); i++) {
System.out.println(names.get(i));
favoritebutton.setBackgroundResource(R.drawable.fav_checked);
}
}
else {
System.out.println(textView_name.getText() + " is already present in the Array at index " + names.indexOf(textView_name.getText()));
int currentIndex = names.indexOf(textView_name.getText());
names.remove(currentIndex);
for (int i=0; i<names.size(); i++) {
System.out.println(names.get(i));
favoritebutton.setBackgroundResource(R.drawable.star_off);
}
}
String str = convertArrayListToJson(names).toString();
saveToPrefrences(str);
}
});
推荐阅读
- c# - 使用 LINQ 表达式从嵌套列表中获取值
- javascript - JavaScript,验证 onkeyup 和提交的 html 表单
- ag-grid - 为什么我从 ag-grid 收到此警告,未找到 agMultiColumnFilter 组件?
- python - Pyomo/CPLEX:停止写入文件'C:\Users\...\...\tmp4ge49sy8.cplex.sol'的解决方案,用于 Python 中 Pyomo 中的 CPLEX API
- scikit-learn - 如何将 Pipeline 与 cross_val_score 结合起来解决多类问题?
- c++ - VSCode C++ 自动完成图标丢失
- python - OPENCV 可以显示网络摄像头或视频,但不能显示 RTSP 流
- c# - 实体框架在添加时设置了错误的 EntityState
- javascript - VueJS 中的模型 URL 参数
- wordpress - 给图片和视频添加关键词——Wordpress