Как установить флажок true true из ответа API в представлении переработчика - PullRequest
0 голосов
/ 06 февраля 2020

Здесь я хочу установить флажок Checked true, получая значение из ответа API в представлении переработчика. Существует несколько значений флажка в ответе. Например, когда пользователь регистрирует в приложении некоторую динамику флажка, значения сохраняются в базе данных. при редактировании профиля будет присутствовать тот же флажок, но необходимо установить Checked true из ответа API

Есть 2 различных API-интерфейса 1 Получение всех значений Edit Profile (при этом также получение значения флажка в виде разделенных запятыми) 2 Checkbox Dynami c значения

Адаптер значений флажка Dynami c

 public class CarrierCustomAdapter extends RecyclerView.Adapter<CarrierCustomAdapter.MyViewHolder> {

        private ArrayList<ResultCarriersAndOccupation> moviesList;

        public CarrierCustomAdapter(ArrayList<ResultCarriersAndOccupation> moviesList) {
            this.moviesList = moviesList;
        }

        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.item_carrier_and_occupations, parent, false);

            return new MyViewHolder(itemView);
        }

        public void clear() {
            int size = this.moviesList.size();
            if (size > 0) {
                for (int i = 0; i < size; i++) {
                    this.moviesList.remove(0);
                }

                this.notifyItemRangeRemoved(0, size);
            }
        }

        @Override
        public void onBindViewHolder(final MyViewHolder holder, final int position) {


            final ResultCarriersAndOccupation datum = moviesList.get(position);
            holder.cb_carrier_occupation.setText(datum.getName() + "");

            holder.cb_carrier_occupation.setTag(moviesList.get(position));




            holder.cb_carrier_occupation.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {





                }
            });


        }

        @Override
        public int getItemCount() {
            return moviesList.size();
        }

        public class MyViewHolder extends RecyclerView.ViewHolder {

            AppCompatCheckBox cb_carrier_occupation;

            public MyViewHolder(View view) {
                super(view);


                cb_carrier_occupation = view.findViewById(R.id.cb_carrier_occupation);


            }

        }

    }

Ответ API EditProfile

Класс модели ResultCarriersAndOccupation

public class ResultCarriersAndOccupation {

    @SerializedName("name")
    @Expose
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

вот ответ EditProfile APIin JSON

  {
    "error": false,
    "msg": "Success",
    "result_user_all_info": {
        "user_id": "2",
        "username": "Fazal",
        "surname": "Sandhi",
        "email": "sandhi.faiz@gmail.com",
        "phone": "9737676689",
        "phone_2": "",
        "line_id": "",
        "address1": "Palej",
        "address2": "Mesrad",
        "city": "Vadodara",
        "zip": "",
        "langlat": "",
        "password": "40bd001563085fc35165329ea1ff5c5ecbdbbeef",
        "fb_id": null,
        "g_id": null,
        "g_photo": null,
        "creation_date": "1564054305",
        "google_plus": null,
        "skype": null,
        "facebook": null,
        "wishlist": "[\"164\",\"166\",\"128\",\"128\",\"109\",\"156\",\"167\",\"114\",\"114\",\"142\",\"142\",\"567\",\"422\"]",
        "last_login": "1580967064",
        "user_type": "default",
        "user_type_till": null,
        "left_product_type": "[]",
        "downloads": "[]",
        "country": "India",
        "state": "Gujarat",
        "wallet": "NDM1My45",
        "m_point": "Nzcx",
        "product_upload": "2",
        "package_info": "[]",
        "id_card_number": "90980201",
        "dob": "29-09-2019",
        "carriers_and_occupations": "Goverment",
        "how_do_u_find_us": "Friend,Facebook,Youtube,Google,Bill Board,Magazine",
        "buy_purpose": "For Sale",
        "gender": "Male"
    }
}

Вот снимок экрана, на котором я хочу установить флажок, установленный как true Как вы найдете нас в представлении переработчика

How do you find us

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 06 февраля 2020

Вы должны сделать что-то шаг за шагом:

1. Вы должны получить количество слов с подсчетом "," в вашем значении json.

2. Разбейте вашу строку на arraylist (в данном примере это список массивов с 5 строковыми значениями)

3. Теперь в a для l oop необходимо проверять строку в массивах с помощью регистра переключателя.

4.every строка в этом массиве будет go в случае переключения со всеми вами, и в каждом случае вы можете установить флажки

обновлять меня в комментариях;)

0 голосов
/ 06 февраля 2020

Вы должны определить модель для вашего уровня пользовательского интерфейса, не используя прямую сериализованную модель из вызова API. Кроме того, вы должны определить интерфейс для хранения вашего набора констант, таких как how_do_u_find_us

@Retention(value = RetentionPolicy.SOURCE)
@IntDef({Method.FACEBOOK, Method.TWITTER, Method.GOOGLE})
public @interface Method {
    int FACEBOOK = 1;
    int TWITTER = 2;
    int GOOGLE = 3;
}

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

class Mapper{
        public POJO map(){
            @Method
            List<Integer> methodsConstantsList = new ArrayList<>();

            String methods = "facebook, twitter";
            String [] methodsList = methods.split(",");
            for (String x: methodsList){
                if (x.equals("facebook")){
                    methodsConstantsList.add(Method.FACEBOOK);
                }else if (x.equals("twitter")){
                    methodsConstantsList.add(Method.TWITTER);
                }
            }
            return new POJO(methodsConstantsList);

        }
    }

, поэтому ваша модель будет

public class POJO {

    @Method
    private List<Integer> methods;

    public POJO(List<Integer> methods){
        this.methods = methods;
    }

    public void setMethods(List<Integer> methods) {
        this.methods = methods;
    }

    public void add(){
        this.methods.add(Method.GOOGLE);
    }
}

, а затем в вашем держателе просмотра, вы должны проверить список значений, которые вы должны установить, флажок установлен на true

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