2016-03-20 57 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是應該被使用。