我在EditText
内有两个ListView
和一个FragmentStatePager
。一切正常但我将EditText
字段添加到ListView
中的条目将被添加,但是当我点击它们时,它们将不会被保存。如何保存它们?
onCreateView
final CustomListViewAdapter2 adapter2 = new CustomListViewAdapter2(getActivity(),
R.layout.swipeviewrowitem, rowItems);
listView.setAdapter(adapter2);
btnswipeview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View View) {
if(wdhedittext.getText().toString().matches("")) {
Toast toast = Toast.makeText(getActivity(),
"Bitte Wiederholungszahl angeben",
Toast.LENGTH_SHORT);
toast.show();
}
else if (kgedittext.getText().toString().matches("")) {
rowitem2 item = new rowitem2(wdhedittext.getText().toString() + "wdh", kgedittext.getText().toString());
adapter2.add(item);
adapter2.notifyDataSetChanged();
}
else{
rowitem2 item = new rowitem2(wdhedittext.getText().toString() + "wdh", kgedittext.getText().toString() + "kg");
adapter2.add(item);
adapter2.notifyDataSetChanged();
}
}
});
CustomListViewAdapter 和 rowitem2
class CustomListViewAdapter2 extends ArrayAdapter<rowitem2> {
Context context;
public CustomListViewAdapter2(Context context, int resourceId,
List<rowitem2> items) {
super(context, resourceId, items);
this.context = context;
}
private class ViewHolder {
TextView txtTitle;
TextView txtDesc;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
rowitem2 rowItem = getItem(position);
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.swipeviewrowitem, null);
holder = new ViewHolder();
holder.txtTitle = (TextView) convertView.findViewById(R.id.mainText);
holder.txtDesc = (TextView) convertView.findViewById(R.id.textView2);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
holder.txtDesc.setText(rowItem.getDesc());
holder.txtTitle.setText(rowItem.getTitle());
return convertView;
}
}
class rowitem2{
private String edittexttitle;
private String edittexttitle2;
public rowitem2( String title, String desc) {
this.edittexttitle = title;
this.edittexttitle2 = desc;
}
public String getTitle() {
return edittexttitle;
}
public String getDesc() {
return edittexttitle2;
}
public void setTitle(String title) {
this.edittexttitle = title;
}
@Override
public String toString() {
return edittexttitle + "\n" + edittexttitle2;
}
}
答案 0 :(得分:0)
我真的不知道,单击后面是什么意思。但是您使用参数rowItems
创建适配器。您可以在那里添加项目并访问它们。这是您要保存的列表,当您再次创建ListView时,需要传递此持久列表。
用于保存数据的方法取决于生命周期。如果它仍然存在,那么下次启动应用程序时。您可以使用sqlite保存您的rowitems,当您启动应用程序时,您可以从该数据库创建列表。 如果您只想回到FragmentActivity中,只要再次创建,就可以保留对该列表的引用并将其传递给适配器。
答案 1 :(得分:0)
为了保存您的EditText更改,您需要在返回阶段使用某种保存。
您可以用3种方式保存数据:SQL-Lite,将数据写入文件以及我最喜欢的SharedPreferences保存数据。
您需要做的就是创建一个字符串列表,它将获取所有EditText并将其保存到SharedPreferences中。
请详细了解here
您的活动有一个生命Lifecycle,因此当您退出活动时,所有数据都将被删除。
祝你好运!
答案 2 :(得分:0)
您的问题的基本解决方案是SQLite。在项目中实现Sqlite,您可以从列表视图中获取/重新提取数据。