首页 > 解决方案 > EditText/TextView 到 ListView

问题描述

我有两个活动。FirstActivity 包含一个指向 SecondActivity 的 onClick 按钮。SecondActivity 包含多个 EditText 和一个 Save Button。单击保存按钮后,我想在 ListView 的 FirstActivity 中显示所有数据。我在 FirstActivity 中使用 TextView 完成了它,但我无法使用 ListAdapter。

public class MainActivity extends AppCompatActivity{

    private ListView list_view;
    List list;
    private Button FloatingActionButton;

    private TextView vortext;
    private TextView nachtext;
    private TextView strtext;
    private TextView orttext;
    private TextView text1;

    private ArrayAdapter<String> ArrayAdapter;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);




        vortext = (TextView) findViewById(R.id.vortext);
        nachtext = (TextView) findViewById(R.id.nachtext);
        strtext = (TextView) findViewById(R.id.strtext);
        orttext = (TextView) findViewById(R.id.orttext);
        list = new ArrayList<String>();






        vortext.setText(getIntent().getStringExtra("Vorname"));
        nachtext.setText(getIntent().getStringExtra("Nachname"));
        strtext.setText(getIntent().getStringExtra("Strasse"));
        orttext.setText(getIntent().getStringExtra("Ort"));



        list_view =  (ListView) findViewById(R.id.list_view);


        String [] strings = new String[] {};
        ArrayAdapter<HashMap<String,String>> listItem = new ArrayAdapter<HashMap<String, String>>();
       HashMap<String,String>map;

       map = new HashMap<String, String>();
       map.put();
       listItem.add(map);


        ArrayAdapter = new ArrayAdapter<String>(this,R.layout.listitem,strings);

        FloatingActionButton myFab =  findViewById(R.id.fab);
        myFab.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                startActivityForResult(new Intent(MainActivity.this, DetailActivity.class), 12);

            }




        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 12) {
            String vs = data.getExtras().getString("vs");
            Log.d("MainActivity",vs);

            String ns = data.getExtras().getString("ns");
            Log.d("MainActivity",ns);

            String ss = data.getExtras().getString("ss");
            Log.d("MainActivity",ss);

    String os = data.getExtras().getString("os");
            Log.d("MainActivity",os);
        }


    }
}

这是我的 DetailsActivity

public class DetailActivity extends AppCompatActivity {


    private  EditText Vorname;
    private  EditText Nachname;
    private  EditText Strasse;
    private  EditText Ort;
    private  Button Save;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        Vorname  = (EditText) findViewById(R.id.Vorname);
        Nachname  =  (EditText)findViewById(R.id.Nachname);
        Strasse  =  (EditText)findViewById(R.id.Strasse);
        Ort  = (EditText) findViewById(R.id.Ort);
        Save    =  (Button) findViewById(R.id.Save);

        Save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String vs = Vorname.getText().toString();
                String ns = Nachname.getText().toString();
                String ss = Strasse.getText().toString();
                String os = Ort.getText().toString();






                Intent intent = new Intent(getBaseContext(),MainActivity.class);
                intent.putExtra("vs", vs);
                intent.putExtra("ns",ns);
                intent.putExtra("ss",ss);
                intent.putExtra("os",os);


                setResult(RESULT_OK, intent);
                finish();
            }
        });

    }

}

标签: android

解决方案


我在您的代码中发现了很多问题。例如,您没有将适配器设置到您的列表中,您使用的是两个不同的列表。所以我修改了你的代码。请使用此代码。您需要将列表作为全局变量,并且需要将适配器设置为列表视图。当您从第二个活动中取回结果时,将这些元素添加到您的列表中并调用ArrayAdapter.notifyDataSetChanged(); 以在您的列表视图中获取新数据。

public class MainActivity extends AppCompatActivity {

private ListView list_view;
List list;
private Button FloatingActionButton;

private TextView vortext;
private TextView nachtext;
private TextView strtext;
private TextView orttext;
private TextView text1;

private android.widget.ArrayAdapter<String> ArrayAdapter;
private ArrayList<String> strings;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    vortext = (TextView) findViewById(R.id.vortext);
    nachtext = (TextView) findViewById(R.id.nachtext);
    strtext = (TextView) findViewById(R.id.strtext);
    orttext = (TextView) findViewById(R.id.orttext);
    list = new ArrayList<String>();


    vortext.setText(getIntent().getStringExtra("Vorname"));
    nachtext.setText(getIntent().getStringExtra("Nachname"));
    strtext.setText(getIntent().getStringExtra("Strasse"));
    orttext.setText(getIntent().getStringExtra("Ort"));


    list_view = (ListView) findViewById(R.id.list_view);


    strings = new ArrayList<String>();
    ArrayAdapter = new ArrayAdapter<String>(this, R.layout.listitem, strings);
    list_view.setAdapter(ArrayAdapter);

    com.google.android.material.floatingactionbutton.FloatingActionButton myFab = findViewById(R.id.fab);
    myFab.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            startActivityForResult(new Intent(MainActivity.this, DetailActivity.class), 12);

        }

    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 12) {
        String vs = data.getExtras().getString("vs");
        Log.d("MainActivity", vs);
        strings.add(vs);
        String ns = data.getExtras().getString("ns");
        Log.d("MainActivity", ns);
        strings.add(ns);

        String ss = data.getExtras().getString("ss");
        Log.d("MainActivity", ss);
        strings.add(ss);

        String os = data.getExtras().getString("os");
        Log.d("MainActivity", os);
        strings.add(os);
        ArrayAdapter.notifyDataSetChanged();

    }


}

}


推荐阅读