【发布时间】:2016-01-06 05:56:44
【问题描述】:
我想在 Shared Preference 中存储一个自定义数组列表,以便下次打开我的应用程序时可以读取该列表。 我看了很多教程和答案,但我无法真正理解。
list_addr.java
public class list_addr {
public String title;
public String detail;
public list_addr( String title, String detail) {
super();
this.title = title;
this.detail=detail;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
@Override
public String toString() {
return title + "\n" ;
}
}
list_adapter.java
enterpublic class list_addr_adapter extends ArrayAdapter<list_addr> {
Context context;
int layoutResourceId;
public list_addr_adapter(Context context, int layoutResourceId, List<list_addr> items) {
super(context, layoutResourceId, items);
this.layoutResourceId = layoutResourceId;
this.context = context;
// this.listener=callback;
}
/*private view holder class*/
private class ViewHolder {
TextView txtTitle;
TextView txtDetail;
ImageView imageview;
CheckBox checkbox;
}
ViewHolder holder = null;
public View getView(final int position, View convertView, ViewGroup parent) {
final list_addr lists = getItem(position);
final int pos=position;
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.items_sav_addr2, null);
holder = new ViewHolder();
holder.txtTitle = (TextView) convertView.findViewById(R.id.textTitle);
holder.txtDetail = (TextView) convertView.findViewById(R.id.detail);
holder.imageview = (ImageView) convertView.findViewById(R.id.imageview);
holder.checkbox=(CheckBox)convertView.findViewById(R.id.chkitem);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
holder.txtTitle.setText(lists.getTitle());
holder.txtDetail.setText(lists.getDetail());
return convertView;
}
}
这就是我膨胀列表视图的方式 -
listView1 = (ListView) findViewById(R.id.listView);
list_adapter_invoice adapter = new list_adapter_invoice(this,
R.layout.items_row, MyAdaptertwo.rowitems);
listView1.setAdapter(adapter);
【问题讨论】:
-
您是否尝试过将其保存在共享首选项中,因为您的代码没有显示一行保存代码
-
@VivekMishra 不,我没有,因为我看不懂方法。
-
然后 google 将 arraylist 存储在共享首选项中
-
@VivekMishra 这就是我要说的,我用谷歌搜索却无法理解。
-
使
list_addr实现Serializable,并使用ObjectOutputStream和ByteArrayOutputStream将该arraylist 序列化为字节数组,然后存储您的字节数组,并在使用时将其反序列化回列表。如果您感到困惑,我可以添加一个代码示例。
标签: android arraylist sharedpreferences android-arrayadapter custom-lists