Добавление данных в просмотр списка динамически без базы данных - PullRequest
0 голосов
/ 25 марта 2020

Я хочу сохранить пользовательские данные в списке с помощью 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;
    }

}

Этот адаптер для просмотра списка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...