2017-07-04 43 views
-2

我已经创建了下面的示例代码来解释我自己。我有一些EditText字段需要将数据存储为“条目”以供以后使用。我的问题是,将这三个变量存储在另一个活动中“列出”的最佳方式是什么? (liAmount,liAccount和vID)。我只是要使用共享偏好,但即使有这样的,我会在同一EditTexts多个条目,所以我真的不知道如何正确序列化他们...将EditText数据存储到稍后要访问的文件/地点的最佳方法是什么?

float liAmount; 
String liAccount; 
String vID; 

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

     if(etLineItemAmount.length() == 0 || etAccountName.length() == 0) { 
      Toast.makeText(NewLineActivity.this, "Fill all fields.", Toast.LENGTH_LONG).show(); 
     } else { 
      saveLineItem(); 
      createVID(); 
     } 

    } 
}); 

public void createVID(){ 
    vID = String.valueOf(liAccount.charAt(0) + liAccount.charAt(1) + liAccount.charAt(2) + liAmount); 
} 

public void saveLineItem(){ 
    liAmount = Float.valueOf(etLineItemAmount.getText().toString()); 
    liAccount = etAccountName.getText().toString(); 
} 

编辑:我要澄清,我确实希望这些数据文件能够长期存储。这些实质上将被用于单独的活动文件中以显示所有以前的条目的列表。

+1

可能的复制(https://stackoverflow.com/questions/7057845/save-arraylist-to-共享首选项) –

+0

仅供参考 - 它不是最好的方法,因为没有最佳*评级。每个人都用他喜欢的东西。这被称为*基于意见的*,它在stackoverflow上是主题 –

回答

0

您可以使用您的应用程序类,暂时存储数据。如果你想存储只是一个字符串或HashMap的列表来存储值作为键值对申报ArrayList。与此类似,在您的自定义应用程序类声明

private ArrayList<String> temp; 

public ArrayList<String> getTemp() { 
    return temp; 
} 

public void setTemp(ArrayList<String> temp) { 
    this.temp = temp; 
} 

然后在任何活动的呼叫((YourApplication)getActivity()).getTemp()并从中添加或获取数据。

1

您可以使用SharedPreferences将数据存储与一个键值对,然后以后需要时检索相同。这是一个示例代码。

Editor editor = sharedpreferences.edit(); 
editor.putString("key", "value"); 
editor.commit(); 

至获取储值使用类似的[保存到ArrayList中SharedPreferences]这个

SharedPreferences prefs = getSharedPreferences(this); 
String restoredText = prefs.getString("key", null); 
相关问题