Android:ListView在我从另一个活动传递数据时没有更新

Android:ListView在我从另一个活动传递数据时没有更新,android,android-layout,android-intent,android-activity,android-listview,Android,Android Layout,Android Intent,Android Activity,Android Listview,我是android新手,正在制作基于listview的应用程序。在我的应用程序中,我有从活动2到活动1的项目。活动_1具有列表视图。当用户单击activity1的ADD按钮时,将调用Activity_2。活动2具有编辑文本。EditText的值应更新ListView。但它只接受Edittext的最后一个值 以下是活动2的代码: Intent intent = new Intent(ItemDetails.this, MainActivity.class);

我是android新手,正在制作基于listview的应用程序。在我的应用程序中,我有从活动2到活动1的项目。活动_1具有列表视图。当用户单击activity1的ADD按钮时,将调用Activity_2。活动2具有编辑文本。EditText的值应更新ListView。但它只接受Edittext的最后一个值

以下是活动2的代码:

          Intent intent = new Intent(ItemDetails.this, MainActivity.class);
          intent.putExtra("values", values);
          startActivity(intent);
活动代码_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();
ArrayList list=new ArrayList();
/**声明ArrayAdapter以将项设置为ListView*/
阵列适配器;
受保护的语境;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
/**设置列表活动的自定义布局*/
setContentView(R.layout.activity_main);
/**对layout main.xml的add按钮的引用*/
按钮btn=(按钮)findViewById(R.id.btnAdd);
/**对layout main.xml的删除按钮的引用*/
按钮btnDel=(按钮)findViewById(R.id.btnDel);
/**定义ArrayAdapter以将项设置为ListView*/
adapter=new ArrayAdapter(这个,android.R.layout.simple\u list\u item\u多选,list);
list.clear();
列表。添加(“铝箔”);
/**将适配器设置为ListView*/
setListAdapter(适配器);
字符串val=”“;
如果(getIntent().getStringExtra(“值”)!=null&&getIntent().getStringExtra(“值”).length()>0){
val=getIntent().getStringExtra(“值”);
列表。添加(val);
}                    
adapter.notifyDataSetChanged();
现在,它将覆盖edittext的最后一个值。
非常感谢您的建议。

您应该使用startActivityForResult开始第二个活动。然后在编辑文本中插入值,并完成活动并发送回结果。在activity1中,在Methodos-onActivityResult中截取结果并更新列表视图

查看有关活动结果的链接:

您应该使用startActivityForResult启动第二个活动。然后在EditText中插入该值,并完成活动并返回结果。在activity1中,在Methodos onActivityResult中截取结果并更新listview

查看有关活动结果的链接:

您应该使用startActivityForResult启动第二个活动。然后在EditText中插入该值,并完成活动并返回结果。在activity1中,在Methodos onActivityResult中截取结果并更新listview

查看有关活动结果的链接:

您应该使用startActivityForResult启动第二个活动。然后在EditText中插入该值,并完成活动并返回结果。在activity1中,在Methodos onActivityResult中截取结果并更新listview

查看有关活动结果的链接:
对于android要更新您的listview,您需要在
适配器上调用
notifyDataSetChanged()

对于android要更新您的listview,您需要在
适配器上调用
notifyDataSetChanged()
对于android要更新您的listview,您需要调用
notifyDataSetChanged()
在您的
适配器上

对于android,要更新您的listview,您需要调用
notifyDataSetChanged()
在您的
适配器上

仅更新数据集是不够的,您必须让
适配器
知道,以便它再次读取数据并更新列表。我看不到您的代码中调用了什么适配器,只需调用
notifySetchDataSanged()
在您的适配器上,它应该可以工作。

仅仅更新数据集是不够的,您必须让
适配器知道,以便它再次读取数据并更新列表。我无法从代码中看到适配器的调用,只需调用
notifyDataSetChanged()
在您的适配器上,它应该可以工作。

仅仅更新数据集是不够的,您必须让
适配器知道,以便它再次读取数据并更新列表。我无法从代码中看到适配器的调用,只需调用
notifyDataSetChanged()
在您的适配器上,它应该可以工作。

仅仅更新数据集是不够的,您必须让
适配器知道,以便它再次读取数据并更新列表。我无法从代码中看到适配器的调用,只需调用
notifyDataSetChanged()
在适配器上,它应该可以工作。

有很多方法…但最简单的解决方案是使用:refreshDisplay();

有很多方法…但最简单的解决方案是使用:refreshDisplay();

执行此操作

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);
这样做,

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);
这样做,

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);
这样做,

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);
有什么好处吗

将适配器首次设置为

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();
您基本上不必每次回来都创建新的适配器对象

好吗

将适配器首次设置为

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();
您基本上不必每次回来都创建新的适配器对象

好吗

将适配器首次设置为

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();
您基本上不必每次回来都创建新的适配器对象

好吗

将适配器首次设置为

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();

您基本上不必每次回来都创建新的适配器对象

谢谢您的回复,但我想让您知道我使用了notifuDataSetChanged()下面感谢您的回复,但我想让您知道我使用了notifyDatasetChanged方法。下面是代码:/**定义ArrayAdapter以将项目设置为ListView*/adapter=new ArrayAdapter(这个,android.R.layout.simple_list_item_多项选择,list);list.add(“铝箔”);adapter.not