Как сохранить все значения флажков в arraylist или shareprefrence

Я поставил четыре флажка. когда я проверяю их истинность, он должен сохраняться в ArrayList. Могу я сохранить их на array list? а также, когда я снимаю выделение с них, они должны быть removed из list или ArrayList. Я реализовал checkboxes, а также одну кнопку выбора всех, чтобы выбрать все checkboxes, и одну кнопку deselect при снятии выделения со всех значений checkboxes, которые должны быть удалены из нее.


My code is

public class SearchFragment extends BaseFragment {
private static final String TAG = null;
String[] name = { "Chicago", "Los Angeles", "Japan", "Europe"};
Object arr;
ArrayList<String> arrayList = new ArrayList<>();
TextView tv2
CheckBox abc,abc1,a,b,c;
public static SearchFragment newInstance () {
    return new SearchFragment();
}

@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
                          Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_search, container, false);
    tv2=(TextView) view.findViewById(R.id.tv2);


    abc=(CheckBox) view.findViewById(R.id.abc);
    a=(CheckBox) view.findViewById(R.id.a);
    b=(CheckBox) view.findViewById(R.id.b);
    c=(CheckBox) view.findViewById(R.id.c);

    return view;
}

@Override
public void onViewCreated (View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    ButterKnife.bind(this, view);


    tv2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String value=tv2.getText().toString().trim();
            if (value.equals("Select all")){
                abc.setChecked(true);
                a.setChecked(true);
                b.setChecked(true);
                c.setChecked(true);
                tv2.setText("UnSelect all");
                arrayList.addAll(Arrays.asList(name));
                Log.e("SELECTED","SELECTED "+arrayList.size());
            }
            else {
                abc.setChecked(false);
                b.setChecked(false);
                a.setChecked(false);
                c.setChecked(false);

                tv2.setText("Select all");
                if (arrayList.size() != 0) {
                    arrayList.clear();

                }
                Log.e("NOT_SELECTED","NOT_SELECTED");
            }
       }
    });
    abc.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked){
                arrayList.addAll(Arrays.asList("Chicago"));
            }

        }
    });

Не могли бы вы опубликовать свой полный код активности

Abhishek kumar 15.03.2018 10:52

Я не могу разместить здесь свой код.

Balwinder 15.03.2018 10:55

открытый класс SearchFragment расширяет BaseFragment {String [] name = {"Чикаго", "Лос-Анджелес", "Япония", "Европа"}; TextView tv2; CheckBox abc, a, b, c; общедоступный статический SearchFragment newInstance () {вернуть новый SearchFragment (); }

Balwinder 15.03.2018 10:56

@Override public View onCreateView (LayoutInflater inflater, контейнер ViewGroup, Bundle savedInstanceState) {View view = inflater.inflate (R.layout.fragment_search, container, false); tv2 = (TextView) view.findViewById (R.id.tv2); abc = (CheckBox) view.findViewById (R.id.abc); a = (CheckBox) view.findViewById (R.id.a); b = (CheckBox) view.findViewById (R.id.b); c = (CheckBox) view.findViewById (R.id.c); возвратный вид; }

Balwinder 15.03.2018 10:56

Отредактируйте свой вопрос и поместите весь свой код в @Shabnam

Abhishek kumar 15.03.2018 10:57

отредактировал, это мой полный код, ты его видишь

Balwinder 15.03.2018 10:59

Я ответил на ваш вопрос, пожалуйста, проверьте это

Abhishek kumar 15.03.2018 11:30

пожалуйста, проверьте, я обновил свой код, я должен сделать вот так.

Balwinder 15.03.2018 13:15
0
8
154
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Use below code to add all of your checkBox data to ArrayList :

ArrayList<String> arrayList = new ArrayList<>();  

tv2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String value=tv2.getText().toString().trim();
        if (value.equals("Select all")){
            abc.setChecked(true);
            a.setChecked(true);
            b.setChecked(true);
            c.setChecked(true);
            tv2.setText("Select all");


           //Adding data to ArrayList
           List arrList = Arrays.asList(name);
           arrayList.addAll(arrList);
           arrayList.addAll(Arrays.asList(arr));

           //or, Add data into ArrayList Manually
           arrayList.add("Chicago");
           arrayList.add("Los Angeles");
           arrayList.add("Japan");
           arrayList.add("Europe");

        }
        else {
            abc.setChecked(false);
            b.setChecked(false);
            a.setChecked(false);
            c.setChecked(false);

            tv2.setText("Select all");

            //Clear Data from ArrayList
            if (arrayList.size()!=0){
                 arrayList.clear
             }
        }

   }
});

Use Below code to Select & Remove :

tv2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String value=tv2.getText().toString().trim();
        if (value.equals("Select all")){
            abc.setChecked(true);
            a.setChecked(true);
            b.setChecked(true);
            c.setChecked(true);
            tv2.setText("Remove all");
            arrayList.addAll(Arrays.asList(name));
            Log.e("SELECTED","SELECTED "+arrayList.size());
        }
        else {
            abc.setChecked(false);
            b.setChecked(false);
            a.setChecked(false);
            c.setChecked(false);

            tv2.setText("Select all");
            if (arrayList.size() != 0) {
                arrayList.clear();
            }
           Log.e("NOT_SELECTED","NOT_SELECTED");
        }
   }
});

Add Single Item As below :

Справка :

Код здесь:

abc.setOnClickListener(new OnClickListener() {

  @Override
  public void onClick(View v) {
            //is chkIos checked?
    if (((CheckBox) v).isChecked()) {
                    arrayList.add("Chicago");
    }
    else 
      // removes Chicago by arrayList Position
      //to avoid runtime exception
                    if (arrayList.contain("Chicago")){
                    arrayList.remove(0);
                    }else{
                   // do your stuff
                      }

  }
});

Я получаю сбой при исключении нулевого указателя на arrayList.clear. java.lang.NullPointerException: попытка вызвать виртуальный метод void java.util.ArrayList.clear () для ссылки на нулевой объект в com.sodick.view.fragments.SearchFragment $ 1.onClick (SearchFra‌ gment.java:96)

Balwinder 15.03.2018 11:31

Если у вас нет данных в ArrayList и вы хотите очистить список массивов, он покажет вам NullPointErexception. Я сделал отредактировать свой ответ, теперь проверяю.

Abhishek kumar 15.03.2018 11:36

Кажется, правильно поместить журнал и проверить данные, ArrayList получает данные вашего массива. @ Shabnam

Abhishek kumar 15.03.2018 11:51

я не получаю данные в журнале. может помочь мне исправить это.

Balwinder 15.03.2018 12:00

Извините, я забыл создать объект ArrayList, я отредактировал свой ответ, проверьте его и ответьте.

Abhishek kumar 15.03.2018 12:08

java.lang.NullPointerException: storage == null в java.util.Arrays $ ArrayList. <init> (Arrays.java:38) в java.util.Arrays.asList (Arrays.java:155) в com.sodick.view .fragments.SearchFragment $ 1.onClick (SearchFra gment.java:87)

Balwinder 15.03.2018 12:29

// или, Добавить данные в ArrayList Вручную использовать эти строки кода и прокомментировать приведенный выше код добавления данных в ArrayList

Abhishek kumar 15.03.2018 12:31

Добавить полный код: // Добавление данных в список ArrayList arrList = Arrays.asList (name); arrayList.addAll (arrList); arrayList.addAll (Arrays.asList (arr));

Abhishek kumar 15.03.2018 12:33

Теперь я получаю все флажки. но когда я нажимаю кнопку «Отменить выбор», ничего не отображается.

Balwinder 15.03.2018 12:39

они все еще отмечены флажками

Balwinder 15.03.2018 12:40

На самом деле ваша часть else не будет запускать @Shabnam, когда вы кодируете условие if, которое каждый раз будет переходить внутрь if.

Abhishek kumar 15.03.2018 12:42

пожалуйста, убедитесь, что я обновил новый код. и plases говорят мне, какие изменения я могу сделать.

Balwinder 15.03.2018 12:44

Я отредактировал свой ответ. Проверить ответ. Использовать Ниже код для выбора и удаления: и ответить.

Abhishek kumar 15.03.2018 12:48

теперь только один вопрос, как я могу распечатать это в журнале. как я могу увидеть, что мои записи собираются или выбираются в arraylist.

Balwinder 15.03.2018 12:51

Я отредактировал свой ответ Ниже код для выбора и удаления:, Проверить и ответить

Abhishek kumar 15.03.2018 12:56

пожалуйста, один вопрос лат. если я хочу установить только 2 флажка, тогда он не отображается в logcat. когда я выбираю все, это отображается в arraylist.

Balwinder 15.03.2018 13:04

если я установил только два флажка, то он не сохраняется в arraylist

Balwinder 15.03.2018 13:05

для этого вам нужно добавить код этого флажка. setOn listner @Shabnam, stackoverflow.com/questions/8386832/android-checkbox-listen‌ er

Abhishek kumar 15.03.2018 13:07

вы пытаетесь получить доступ к списку массивов без его инициализации. Используйте нижеприведенный код

public class SearchFragment extends BaseFragment {
String[] name = { "Chicago", "Los Angeles", "Japan", "Europe"};
Object arr;
ArrayList<String> arrayList = new ArrayList<>();
TextView tv2,tv3,tv4,tv5,tv6,tv7;
CheckBox 
abc,abc1,a,b,c,abc2,abc3,abc4,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4;
public static SearchFragment newInstance () {
    return new SearchFragment();
}

@Override
public View onCreateView (LayoutInflater inflater, ViewGroup 
 container,
                      Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search, container, 
false);
tv2=(TextView) view.findViewById(R.id.tv2);


abc=(CheckBox) view.findViewById(R.id.abc);
a=(CheckBox) view.findViewById(R.id.a);
b=(CheckBox) view.findViewById(R.id.b);
c=(CheckBox) view.findViewById(R.id.c);

return view;
}

@Override
public void onViewCreated (View view, @Nullable Bundle 
savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

ButterKnife.bind(this, view);


tv2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String value=tv2.getText().toString().trim();
        if (value.equals("Select all")){
            abc.setChecked(true);
            a.setChecked(true);
            b.setChecked(true);
            c.setChecked(true);
            tv2.setText("Clear All");

            arrayList.addAll(Arrays.asList(name));



        }
        else {
            abc.setChecked(false);
            b.setChecked(false);
            a.setChecked(false);
            c.setChecked(false);

            tv2.setText("Select all");
            arrayList.clear();
        }
   }
});
}}

да, он работает, но когда я нажал кнопку «Отменить выбор», он все еще показывает флажки, но ничего не произошло

Balwinder 15.03.2018 12:41

@Shabnam где функция deselect/Click?

Vishal Yadav 15.03.2018 13:07

когда 1 раз щелкните tv2, все флажки будут выбраны, когда 2 раза щелкните tv2, все флажки будут сняты

KMI 15.03.2018 14:00

Другие вопросы по теме