Я хочу сохранить пользовательские данные в списке с помощью ArrayList динамически, я не использую базы данных. но я сталкиваюсь с одной проблемой. Каждый раз, когда я добавляю данные в просмотр списка, он заменяет предыдущие данные и показывает только последние введенные мной данные. Я передаю это значение, используя SharedPreference, для следующего действия, как это ...
public class MainActivity extends AppCompatActivity {
EditText id, name, email, phone;
Button ok;
int size = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
id = findViewById(R.id.use_id);
name = findViewById(R.id.use_name);
email = findViewById(R.id.use_email);
phone = findViewById(R.id.use_mobile);
ok = findViewById(R.id.submit_btn);
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, List_User_Activity.class);
SharedPreferences spref = getSharedPreferences("mynotifyid", MODE_PRIVATE);
SharedPreferences.Editor spreedit = spref.edit();
size = spref.getInt("size", size);
size = size + 1;
spreedit.putString("user_id", id.getText().toString());
spreedit.putString("user_name", name.getText().toString());
spreedit.putString("user_email", email.getText().toString());
spreedit.putString("user_phone", phone.getText().toString());
spreedit.apply();
startActivity(i);
}
});
}
}
Это действие, в котором я получаю пользовательские данные и перехожу к списку действий, используя SharedPreference
public class List_User_Activity extends AppCompatActivity {
static ArrayList<User_Model> userModels;
static User_Model user1;
private static MyListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list__user_);
user1 = new User_Model();
userModels= new ArrayList<>();
SharedPreferences spref = getSharedPreferences("mynotifyid", Context.MODE_PRIVATE);
int size = spref.getInt("size",0);
for (int i = 0; i <= size; i++) {
String showUserId = spref.getString("user_id", "");
String showUserName = spref.getString("user_name", "");
String showUserEmail = spref.getString("user_email", "");
String showUserPhone = spref.getString("user_phone", "");
user1.setU_id(Integer.parseInt(showUserId));
user1.setU_name(showUserName);
user1.setU_email(showUserEmail);
user1.setU_mobile(Integer.parseInt(showUserPhone));
userModels.add(user1);
}
final ListView lv = (ListView) findViewById(R.id.list_view);
adapter= ew MyListAdapter(this,userModels);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
User_Model user = (User_Model) lv.getItemAtPosition(position);
Toast.makeText(List_User_Activity.this, "Selected :" + " "+user.getU_email(), Toast.LENGTH_SHORT).show();
}
});
}
}
Это действие, в котором я получаю пользовательские данные и перехожу к действию просмотра списка, используя SharedPreference
private ArrayList<User_Model> user_data;
private LayoutInflater layoutInflater;
public MyListAdapter(Context aContext, ArrayList<User_Model> listData) {
this.user_data = listData;
layoutInflater = LayoutInflater.from(aContext);
}
@Override
public int getCount() {
return user_data.size();
}
@Override
public Object getItem(int i) {
return user_data.get(i);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder;
if (view == null) {
view = layoutInflater.inflate(R.layout.user_list_layout, null);
holder = new ViewHolder();
holder.textViewId = (TextView) view.findViewById(R.id.show_id);
holder.textViewName = (TextView) view.findViewById(R.id.show_name);
holder.textViewEmail = (TextView) view.findViewById(R.id.show_email);
holder.textViewPhone = (TextView) view.findViewById(R.id.show_phone);
view.setTag(holder);
}
else {
holder = (ViewHolder) view.getTag();}
holder.textViewId.setText(String.valueOf(user_data.get(i).getU_id()));
holder.textViewName.setText(user_data.get(i).getU_name());
holder.textViewEmail.setText(user_data.get(i).getU_email());
holder.textViewPhone.setText(String.valueOf(user_data.get(i).getU_mobile()));
return view;
}
static class ViewHolder {
TextView textViewId;
TextView textViewName;
TextView textViewEmail;
TextView textViewPhone;
}
}
Этот адаптер для просмотра списка