Реализация SharedPreference в getview - PullRequest
0 голосов
/ 28 ноября 2018

Как я могу реализовать SharedPreference в моем классе Adapter?Я хочу использовать его для сохранения состояния CheckBox.Теперь значение CheckBox снимает флажок, когда я изменяю Activity или добавляю новый элемент в ListView.

public class listItems extends ArrayAdapter<Items> {

Activity context;
List<Items> listitems;

public listItems(Activity context, List<Items> listitems) {
    super(context, R.layout.list_items, listitems);
    this.context = context;
    this.listitems = listitems;
}

@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();


    View listViewItem = inflater.inflate(R.layout.list_items, null, true);


    final Items items = listitems.get(position);

    final TextView tvitemname = (TextView) listViewItem.findViewById(R.id.tvitemname);

    final CheckBox simpleCheckedTextview = (CheckBox) listViewItem.findViewById(R.id.cb);
    tvitemname.setText(items.getItemname());
    simpleCheckedTextview.isChecked();




    return listViewItem;
}

Я добавил свой класс Items.Это выглядит хорошо?У меня есть TextView, который получает данные от FireBase.

Класс:

public class Items {

String itemId;
String itemname;
private boolean checked;

public Items(){

}


public Items(String itemId, String itemname, boolean checked) {
    this.itemId = itemId;
    this.itemname = itemname;
    this.checked = checked;
}




public String getItemId() {
    return itemId;
}

public String getItemname() {
    return itemname;

}

public void setChecked(boolean checked) {
    this.checked = checked;
}

public boolean isChecked() {
    return checked;
}

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Полагаю, вы новичок в разработке под Android, поэтому советую начать работать с RecyclerView вместо ListView. Эта является хорошей статьей, которая поможет вам обрабатывать состояния checkBox в RecyclerViewAdapters.

Способ, которым адаптеры обрабатывают состояния для каждого элемента, полностью отличается от способа действия.После того, как вы прокрутите и элементы не будут видны, они будут уничтожены и воссозданы заново только тогда, когда они видны.Вот почему вам нужно хранить состояние всех значений, по крайней мере, в памяти, например, с помощью Map или SparseArray.Просто следуйте пошаговой ссылке, и она будет работать.

Хотите сохранить эти данные, относящиеся к конкретному пользователю, даже на разных устройствах?Если да, вы должны отправить его в свою базу Firebase, в противном случае просто сохраните его локально.Вы можете использовать SharedPreferences, Комната , Область или любое другое локальное хранилище.

0 голосов
/ 29 ноября 2018

Как я могу реализовать SharedPreference в классе моего адаптера:

Сохранить:

SharedPreferences sharedPreferences =  context.getSharedPreferences("checkboxpref", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("checkbox_value", true);
editor.apply();

Получить:

SharedPreferences sharedPreferences =  context.getSharedPreferences("checkboxpref", 0);
final boolean getShared = sharedPreferences.getBoolean("checkbox_value", false);
...