我是Android新手,我正在制作基于listview的应用程序。在我的应用程序中,我有从Acitity_2到Activity_1的项目。 Activity_1具有列表视图。当用户单击activity1的ADD按钮时,将调用Activity_2。 Activity_2具有EditText。 EditText的值应该更新ListView。但它只占用Edittext的最后一个值。
以下是Activity_2的代码:
Intent intent = new Intent(ItemDetails.this, MainActivity.class);
intent.putExtra("values", values);
startActivity(intent);
Activity_1代码
ArrayList<String> list = new ArrayList<String>();
/** Declaring an ArrayAdapter to set items to ListView */
ArrayAdapter<String> adapter;
protected Context context;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/** Setting a custom layout for the list activity */
setContentView(R.layout.activity_main);
/** Reference to the add button of the layout main.xml */
Button btn = (Button) findViewById(R.id.btnAdd);
/** Reference to the delete button of the layout main.xml */
Button btnDel = (Button) findViewById(R.id.btnDel);
/** Defining the ArrayAdapter to set items to ListView */
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, list);
list.clear();
list.add("Aluminium foil");
/** Setting the adapter to the ListView */
setListAdapter(adapter);
String val="";
if(getIntent().getStringExtra("values")!=null && getIntent().getStringExtra("values").length() > 0){
val = getIntent().getStringExtra("values");
list.add(val);
}
adapter.notifyDataSetChanged();
现在它覆盖了edittext的最后一个值。 建议表示赞赏。
答案 0 :(得分:3)
有什么好处吗?
首次将适配器设置为
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, list);
listView.setAdapter(adapter);
从活动2回来
String val="";
if(getIntent().getStringExtra("values")!=null && getIntent().getStringExtra("values").length > 0){
val = getIntent().getStringExtra("values");
list.add(val);
}
adapter.notifyDataSetChanged();
每次回来时,你基本上不必创建新的适配器对象
答案 1 :(得分:0)
您应该使用startActivityForResult启动第二个Activity。然后在editext中插入值并完成发送回结果的活动。在activity1中截取methos onActivityResult中的结果并更新listview。
查看此有关活动结果的链接: http://developer.android.com/training/basics/intents/result.html
答案 2 :(得分:0)
要让Android更新您的列表视图,您需要在notifyDataSetChanged()
上致电Adapter
。
答案 3 :(得分:0)
仅仅更新您的数据集还不够,您必须让Adapter
知道,以便再次读取数据并更新列表。我无法从您的代码中看到您调整适配器的内容,但只需在适配器上调用notifyDataSetChanged()
即可。
答案 4 :(得分:0)
有很多种方法......但最简单的解决方案是使用:refreshDisplay();
答案 5 :(得分:0)
这样做,
String itemVal=getIntent().getStringExtra("values");
if(itemVal==null){
}else{
list.add(itemVal);
}
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, list);