2016-03-20 53 views
2

我已经根据建议进行了更改,但它工作正常。但我已将按钮mainactivity移至main2activity以检查列表,但它给出了错误。 这是我的代码和按钮,检查列表R.Id.viewlist保存列表中的项目

public class MainActivity extends AppCompatActivity { 
EditText editText; 
    Button addButton; 
     @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    final EditText editText =(EditText)findViewById(R.id.editText); 
    Button button = (Button)findViewById(R.id.addButton); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity.this,Main2Activity.class); 
      intent.putExtra("text", editText.getText().toString()); 
      startActivity(intent); 
     } 
    }); 
    Button button1 = (Button)findViewById(R.id.viewlist); 
    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity.this,Main2Activity.class); 
       startActivity(intent); 
     } 
    }); 

main2acctivity

public class Main2Activity extends AppCompatActivity { 
ListView listView; 
    ArrayAdapter<String> adapter; 
    @Override 
protected void onRestart() { 
    super.onRestart(); 
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, Global.list1); 
     listView.setAdapter(adapter); 
    if (Global.list1.size()<1){ 
     Global.list1=new ArrayList<>(); 
    } 
    } 
    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
     Intent intent1= getIntent(); 
     listView = (ListView) findViewById(R.id.list); 
      adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, Global.list1); 
     listView.setAdapter(adapter); 
    Global.list1.add(intent1.getStringExtra("text")); 
     adapter.notifyDataSetChanged(); 
        } 

全球。类

+0

创建一个全球arraylist并添加项目,以便您的列表将自动更新当您更新arraylist – Mohit

+0

我是新来的Android可以帮助我与如何创建全局数组list.please –

+0

是的肯定...有一看我的[这](http://stackoverflow.com/a/35183420/2553431)答案..这是similer你的问题....后,如果你仍然面临问题.... – Mohit

回答

0

您应该重写您的活动的onRestart metod并放入代码以用全局数组填充列表视图。

@Override 
public void onRestart() 
{ 
super.onRestart(); 
adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, Global.list1); 
listView.setAdapter(adapter); 
} 

也许你不希望这样做

Global.list1 = new ArrayList(); 

相反,你应该这样做

if(Global.list1.size()<1) 
{ 
Global.list1 = new ArrayList(); 
Global.list1.add("First Item - added on Activity Create"); 
} 

编辑: 对于新的问题:

//In the Main2Activity 
String haveString=intent1.getStringExtra("text"); 
if(haveString!=null) 
    { 
    Global.list1.add(haveString); 
    adapter.notifyDataSetChanged(); 
    } 
+0

感谢好友我的应用程序现在正在工作 –

+0

现在我把一个按钮,以查看mainactivity列表中见清单。我坐在点击监听器上打开main2activity,但它显示错误。 –

+0

更新帖子以解决新问题,如果我知道如何解决问题,我会更新我的答案。在日志中放入代码和错误消息。如果答案是帮助你选择它像一个apropiate。 – DonLeopardo

0

这取决于您是否想在应用程序使用会话中保留此列表(意思是说,如果他们关闭应用程序,列表将从头开始重置。如果是这种情况,您希望使用“SharedPreferences “与储存项目中映射到一个字段中SharedPreferences列表 如果是这样的话,你可以去here

这将告诉你如何存储仍然存在,即使用户项目的数组列表重新启动应用程序并返回到第二个活动。

否则,如果您不希望跨应用程序会话/重新启动具有持久性,那么您实际上可以使用一个全球单身人士存储上面建议的种类列表。

public static class GlobalListStorage { 
    private static GlobalListStorage instance = null; 
    public ArrayList<String> mItems=new ArrayList<String>(); 
    protected GlobalListStorage() { 
    } 

    public GlobalListStorage getInstance() { 
     if (instance == null) { 
      instance = new GlobalListStorage(); 
     } 
     return instance; 
    } 
} 

现在,当你想将这些条目添加到列表中,你会做以下你MainActivity.java,在你点击按钮监听器。

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(MainActivity.this,Main2Activity.class); 
     GlobalListStorage.getInstance().mItems.add(editText.getText().toString()); 
     startActivity(intent); 
    } 
}); 

现在,在您ArrayListAdapter,请务必使用GlobalListStorage.getInstance()。mItems为你的ArrayList是应该被使用。