如何确保在这种情况下创建新票证时,然后在第二个活动中进行可视化,然后添加新票证,然后由我使用先前创建的票证进行书写,所以我希望不要创建所有新票证被覆盖但被添加
公共类Aggiungi扩展了AppCompatActivity {
public EditText ed_ticket,ed_redattore,ed_targa,ed_dataA,ed_materiale,ed_dataC;
Button salvataggio;
public SharedPreferences shared;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aggiungi);
ActionBar actionBar = getSupportActionBar();
Objects.requireNonNull(getSupportActionBar()).setTitle("Aggiungi");
ed_ticket = findViewById(R.id.editex_ticket);
ed_redattore = findViewById(R.id.editex_redattore);
ed_targa = findViewById(R.id.editex_targa);
ed_dataA = findViewById(R.id.editex_dataA);
ed_materiale = findViewById(R.id.editex_materiale);
ed_dataC = findViewById(R.id.editex_dataC);
salvataggio = findViewById(R.id.btn_save);
salvataggio.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
savelista();
}
});
}
public void savelista() {
shared = getSharedPreferences("newListTicket", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putString("ticket",ed_ticket.getText().toString().trim());
editor.putString("redattore",ed_redattore.getText().toString().trim());
editor.putString("targa",ed_targa.getText().toString().trim());
editor.putString("dataA",ed_dataA.getText().toString().trim());
editor.putString("materiale",ed_materiale.getText().toString().trim());
editor.putString("dataC",ed_dataC.getText().toString().trim());
editor.commit();
}
}
公共类Visualizza扩展了AppCompatActivity {
private MaterialSearchView mMaterialSearch;
private SharedPreferences shared;
private ArrayList<Ticket> mExampleList;
RecyclerView mRecyclearView;
RecyclerView.Adapter mAdapter;
RecyclerView.LayoutManager mLayoutManager;
Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recyclerview);
/*//todo modalita FullScreen
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);*/
mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mMaterialSearch = findViewById(R.id.searchview);
createExampleList();
BuildRecyclearView();
createNewTicket();
}
//TODO nuova scheda Ticket
public void createNewTicket() {
shared = getPreferences(MODE_PRIVATE);
//int ticket = Integer.parseInt(incomingMessages.getString(""));
String ticket = shared.getString("ticket","");
String redattore = shared.getString("redattore","");
String targa = shared.getString("targa","");
String dataA = shared.getString("dataA","");
String materiale = shared.getString("materiale","");
String dataC = shared.getString("dataC","");
//TODO creazione nuova scheda Ticket
Ticket Ticket = new Ticket(ticket, redattore, targa, dataA, materiale, dataC);
mExampleList.add(Ticket);
mAdapter.notifyDataSetChanged();
}
//TODO Costruzione della RecyclerView
public void BuildRecyclearView() {
//todo dichiarazione adapter e chiamiamo il suo costruttore passandogli i parametri necessari
mRecyclearView = findViewById(R.id.miorecyclerView);
mRecyclearView.setHasFixedSize(true);
//todo assegnazione LinearLayoutManager alla RecyclearView
mLayoutManager = new LinearLayoutManager(this);
//todo set LinearLayoutManager
mAdapter = new ExampleAdapter(mExampleList);
mRecyclearView.setLayoutManager(mLayoutManager);
//TODO COLLEGAMENTO ADAPTER ALLA TABLELYOUT
mRecyclearView.setAdapter(mAdapter);
}
//TODO Esempio di ArrayList
public void createExampleList () {
mExampleList = new ArrayList<>();
mExampleList.add(new Ticket("123356", "ALESSANDRO", "EP562WS", "12052018", "Lampeggiante Guasto", "23/10/2018"));
mExampleList.add(new Ticket("34567", "FRANCESCO", "EP762NS", "19052019", "Motore Guasto", "21/05/2019"));
mExampleList.add(new Ticket("34353", "ALESSANDRO", "EP760WR", "25052017", "Freni Guasti", "10/12/2018"));
mExampleList.add(new Ticket("23786","FRANCESCO","EG223KL","27082019","RUOTA SX","28/08/2019"));
}
//TODO Procedura ToolBar Menu
@Override
public boolean onCreateOptionsMenu (Menu menu){
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.my_menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
MenuItem menuItem = menu.findItem(R.id.action_search);
mMaterialSearch.setMenuItem(menuItem);
// return true;
return super.onCreateOptionsMenu(menu);
}
//TODO Procedura di selezione pulsante Menu
@Override
public boolean onOptionsItemSelected (MenuItem item){
if (item.getItemId() == R.id.action_salva) {
Toast.makeText(Visualizza.this, "Hai premuto il tasto Salva", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:0)
由于您对添加到key
的所有项目使用相同的SharedPreferences
,因此它们将被覆盖。您可以对要添加到SharedPreferences
的每个项目使用不同的键,这样它们就不会相互覆盖。即ticket_1
,ticket_2
等。但是恕我直言,最好使用SQLite保存此类数据,或者最好使用Room库保存数据。< / p>
答案 1 :(得分:0)
SharedPreference
可以处理Set
。您需要在书写时将ArrayList
转换为Set
,然后在阅读时将其从Set
转换回ArrayList
。
使用该库Android SharedPreferences Turbo可以很容易地将ArrayList
放入SharedPreferences
中。它在内部使用答案开始时所说的集合。
第1步:创建一个TinyDb对象
TinyDb tinyDb = new TinyDb(context);
第2步:将列表放入SharedPreferences
tinyDb.putList("UniqueStringToIdentifyYourList", yourList);
第3步:获取列表
tinydb.getList("UniqueStringToIdentifyYourList");