Android:简单的 Listview 不使用 startActivityForResult() 显示数组中的字符串

Android: Simple Listview not displaying strings from array using startActivityForResult()

我有两个活动。我的主要和第二个主要,我在第二个主要中添加我的字符​​串,然后按后退按钮转到我的第一个主要。 但是,当我将数组传递给 arraylist 适配器中的 listview 时,它不起作用。

 ArrayList<String> array= new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_address_list);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);


}
private void Add() {
    Intent intent = new Intent(AddressList.this, SilentGeofence.class);
    startActivityForResult(intent, 2);

}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 2) {
       String result = data.getStringExtra("result");
            array.add(result);
       System.out.println(array);
        ArrayAdapter<String> adapter= new ArrayAdapter<String>(this,R.layout.activity_address_list,array);
        ListView listview = (ListView) findViewById(R.id.listView);
        listview.setAdapter(adapter);
        }
    }

这是我的第二个观点

  Button add = (Button) findViewById(R.id.button);
    add.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {

            String ag = txt1.getText().toString().trim();
            if (ag.length() != 0) {
                address.add(ag);
                txt1.setText("");
                System.out.println(address);
                Intent returnIntent = new Intent(SilentGeofence.this,AddressList.class);
                returnIntent.putExtra("result",address);
                setResult(2,returnIntent);

            }
        }

    });

这是我的地址列表 xml。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.anusha.app.AddressList"
>


<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true" />

所以你应该做的是创建另一个 xml 文件,其中包含该列表视图的文本视图

    <TextView
       android:id="your id"
       android:layout_width=""
       android:layout_height=""/>

然后这样做

    new ArrayAdapter<String>(this,R.layout.textviewlayout,R.id.youridforthattextview,array);

你的第一个 Activity:

String result = data.getStringExtra("result");

我们知道您的 ListView 基于字符串的 ArrayList。所以你添加结果:

array.add(result);

在你的第二个 Activity 你有一个字符串 ag

String ag = txt1.getText().toString().trim();

您似乎正在将其添加到列表中

address.add(ag);

但是您 return 列表

而不是字符串
returnIntent.putExtra("result",address);

也许您是想 return 字符串 ag

returnIntent.putExtra("result",ag);