пытаясь получить массив текстовых представлений для сохранения в общих настройках - PullRequest
0 голосов
/ 04 мая 2020

Прямо сейчас у меня есть метод для моего адаптера просмотра повторного использования, где, если элемент проверен, телефонный номер, содержащийся в этом элементе, будет использоваться в другой деятельности. Что мне интересно, так это если я выберу несколько элементов, как мне получить массив этих числовых текстовых представлений и добавить их к разделяемой настройке, чтобы затем использовать в другом действии. Вот мой адаптер, где я могу выбрать элемент, и число добавляется в строку:

 adapter1 = new FirebaseRecyclerAdapter<contact, contactAdapter>(options1) {
            @Override
            protected void onBindViewHolder(@NonNull final contactAdapter holder, final int position, @NonNull final contact model) {
                holder.contactName.setText(model.getContactName());
                holder.contactPhone.setText(model.getContactPhone());

                SharedPreferences prefs =  Home.this.getActivity().getSharedPreferences("check", MODE_PRIVATE);
                String check_state = prefs.getString( "state", "default");
                if(check_state.equals("true"){
                    holder.chk.setChecked(true);
                }
                else {
                    holder.chk.setChecked(false);
                }
                holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        if (isChecked) {
                            holder.chk.setChecked(true);
                            for (int i = 0; i < adapter1.getItemCount(); i++) {
                                if (adapter1.getItem(i).isSelected(true)) {
                                    number = ((TextView) holder.itemView.findViewById(R.id.contactPhone)).getText().toString();
                                    Toast.makeText(getActivity(), "Data Inserted....." + number, Toast.LENGTH_SHORT).show();
                                } else {
                                    Toast.makeText(getActivity(), "Error", Toast.LENGTH_LONG).show();
                                }
                            }
                            SharedPreferences.Editor editor = Home.this.getActivity().getSharedPreferences("check", MODE_PRIVATE).edit();
                            editor.putString("state", "true");
                            editor.putString("number", number);
                            editor.apply();
                            adapter1.notifyDataSetChanged();
                        }else {
                            holder.chk.setChecked(false);
                            SharedPreferences.Editor editor =  Home.this.getActivity().getSharedPreferences("check", MODE_PRIVATE).edit();
                            editor.putString("state", "false");
                            editor.apply();
                            adapter1.notifyDataSetChanged();
                        }
                    }
                });

            }

Как вы можете видеть, я сохраняю число в строку и помещаю число в предпочтение общего ресурса, которое похоже на работу. Любые предложения о том, как сделать это с массивом?

1 Ответ

0 голосов
/ 04 мая 2020

Добавьте «int» для вашего ключа при записи в общие настройки.

Примерно так:

if (isChecked) {
holder.chk.setChecked(true);
int j =0;
for (int i = 0; i < adapter1.getItemCount(); i++) {
    if (adapter1.getItem(i).isSelected(true)) {
        number = ((TextView) holder.itemView.findViewById(R.id.contactPhone)).getText().toString();
        Toast.makeText(getActivity(), "Data Inserted....." + number, Toast.LENGTH_SHORT).show();
        editor.putString("state_"+j,"true");
        editor.putString("number_"+j,number);
        j++;
    } else {
        Toast.makeText(getActivity(), "Error", Toast.LENGTH_LONG).show();
    }
}
editor.apply();

И, читая его обратно, перечитайте их в al oop!

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