【发布时间】:2015-02-03 14:50:18
【问题描述】:
我有一个FragmentStatePager,两个EditText 和一个自定义ListView。
用户可以进行两个输入并单击Button,它们将被添加到ListView,但它们不会存储在ListView 中。ListView 包含ArrayList。
我希望EditText 的输入将存储在ArrayList 中。
有人能写出怎么做吗?
我的onCreateView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.swipeview, container, false);
txtTitel = (TextView) rootView.findViewById(R.id.swipeviewtitle);
// Capture position and set to the TextViews
txtTitel.setText(titel[position]);
// Locate the ImageView in viewpager_item.xml
image = (ImageView) rootView.findViewById(R.id.swipeViewimage);
// Capture position and set to the ImageView
String title = titel[position];
Integer imageRes = TITLE_IMAGES.get(title);
if (imageRes == null) { // not found in map
image.setImageResource(0);
} else {
image.setImageResource(imageRes);
}
final ListView listView = (ListView) rootView.findViewById(R.id.listViewswipeview);
final EditText wdhedittext = (EditText) rootView.findViewById(R.id.editTextswipeView);
final EditText kgedittext = (EditText) rootView.findViewById(R.id.editText2);
final Button btnswipeview = (Button) rootView.findViewById(R.id.imagebuttonswipeview);
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("")) {
final rowitem2 item = new rowitem2(wdhedittext.getText().toString() + "wdh", kgedittext.getText().toString());
adapter2.add(item);
rowItems.add(item);
} else {
final rowitem2 item = new rowitem2(wdhedittext.getText().toString() + "wdh", kgedittext.getText().toString() + "kg");
adapter2.add(item);
rowItems.add(item);
/*String name = wdhedittext.getText().toString();
int rowId = workoutDBAO2.addWorkout2(name);
HashMap rowValsSets = new HashMap();
rowValsSets.put("sets", name);
rowValsSets.put("id", rowId);
adapter3.add(rowValsSets);*/
}
}
});
rowItems = new ArrayList<rowitem2>();
return rootView;
}
CustomListViewAdapter2 和 rowitem2 类
class CustomListViewAdapter2 extends ArrayAdapter<rowitem2> {
private final ArrayList<rowitem2> items;
Context context;
public CustomListViewAdapter2(Context context, int resourceId,
ArrayList<rowitem2> items) {
super(context, resourceId, items);
this.context = context;
this.items=items;
}
public View getView(int position, View convertView, ViewGroup parent) {
rowitem2 rowItem = items.get(position);
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View view = mInflater.inflate(R.layout.swipeviewrowitem, null);
TextView txtTitle = (TextView) view.findViewById(R.id.mainText2);
TextView txtDesc = (TextView) view.findViewById(R.id.textView2);
txtDesc.setText(rowItem.getDesc());
txtTitle.setText(rowItem.getTitle());
return view;
}
@Override
public boolean areAllItemsEnabled() {
return true;
}
}
}
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;
}
}
【问题讨论】:
-
当列表发生变化时,您需要在适配器上调用
notifyDataSetChanged() -
这不会改变任何事情。值仍然消失。
-
请注意,Java 的约定是将
class名称以大写字母开头,例如private class MyClass{}
标签: android android-listview arraylist android-edittext