列表在更改活动后查看消失

现在已经有好几个小时了,我一直在努力解决一个关于java中列表视图的问题,我正在努力做一个实践性的应用程序。 我有一个关于我的主要活动的列表视图,在从该活动更改并返回到它之后,列表视图消失了。 我google了,看到人们改变事物并保存实例并试图实现它但没有成功,但是,这可能是因为我对java非常新。 这是代码:

public class MainActivity extends AppCompatActivity { private ArrayList items; private ArrayAdapter itemsAdapter; private ListView lvItems; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lvItems = (ListView) findViewById(R.id.lvItems); items = new ArrayList(); itemsAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, items); lvItems.setAdapter(itemsAdapter); items.add("Test"); setupListViewListener(); } // Attaches a long click listener to the listview private void setupListViewListener() { lvItems.setOnItemLongClickListener( new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView adapter, View item, int pos, long id) { // Remove the item within array at position items.remove(pos); // Refresh the adapter itemsAdapter.notifyDataSetChanged(); // Return true consumes the long click event (marks it handled) return true; } });} public void onChangeView(View v) { setContentView(R.layout.activity_create); } public void onConfirmItem(View v) { EditText etNewItem = (EditText) findViewById(R.id.etNewItem); String itemText = etNewItem.getText().toString(); itemsAdapter.add(itemText); etNewItem.setText(""); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu items for use in the action bar MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_main, menu); return super.onCreateOptionsMenu(menu); } 

您在多个位置使用setContentView(),但您没有在其中设置适配器。 您可以在事件(UI)线程上运行时调用setContentView。 请注意,执行此操作时,需要重置通过调用findViewById初始化的任何字段。

而不是这个:

 lvItems.setAdapter(itemsAdapter); items.add("Test"); 

做这个 :

 items.add("Test"); lvItems.setAdapter(itemsAdapter); 

你正在设置一个空的适配器然后填充数组

另一个问题是由@Skynet指出的,谢谢你