android - 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();
}
});
}
}
解决方案
我在您的代码中发现了很多问题。例如,您没有将适配器设置到您的列表中,您使用的是两个不同的列表。所以我修改了你的代码。请使用此代码。您需要将列表作为全局变量,并且需要将适配器设置为列表视图。当您从第二个活动中取回结果时,将这些元素添加到您的列表中并调用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();
}
}
}
推荐阅读
- python - 在 csv 文件中搜索字符串输入的特定列
- pine-script - Pine 脚本:退出策略 5 分钟。收市前
- c# - 在 C# 中随机化列表错误 CS1503 中的对象实例
- css - 在 Ionic 5 标签应用程序中的标签之间切换时图像的奇怪行为
- button - 如何对齐 extjs 中的分段按钮?
- python - 在 pytorch 中获取 LSTM 的内部隐藏状态
- react-native - 如何在 React-Native 上设置第一个初始页面
- r - 为什么输入值不被函数拾取
- mysql - 我试图在其他列之前放置一个列,并且应用程序说是错误的
- php - 如何从这个数组中获取两个值