यहां मैं रीसाइक्लर व्यू में एपीआई प्रतिक्रिया से मूल्य प्राप्त करने वाले चेक किए गए सही चेकबॉक्स को सेट करना चाहता हूं प्रतिक्रिया में चेकबॉक्स के कई मान हैं उदाहरण के लिए जब कोई उपयोगकर्ता इन-ऐप पंजीकृत करता है तो कुछ चेकबॉक्स गतिशीलता जो मान डेटाबेस में सहेजे जाते हैं। प्रोफ़ाइल संपादित करते समय वही चेकबॉक्स होगा लेकिन एपीआई प्रतिक्रिया से चेक किए गए सत्य को सेट करने की आवश्यकता है

2 अलग-अलग एपीआई हैं 1 प्रोफ़ाइल संपादित करें के सभी मान प्राप्त करना (जिसमें अल्पविराम से अलग किए गए चेकबॉक्स का मान भी प्राप्त करना) 2 चेकबॉक्स गतिशील मान

यहाँ डायनामिक चेकबॉक्स मान एडेप्टर है

 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);


            }

        }

    }

एडिटप्रोफाइल की एपीआई प्रतिक्रिया

मॉडल वर्ग परिणामवाहक और व्यवसाय

public class ResultCarriersAndOccupation {

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

    public String getName() {
        return name;
    }

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

}

यहाँ JSON में EditProfile API की प्रतिक्रिया है

  {
    "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"
    }
}

यहां एक स्क्रीनशॉट है जिसमें मैं चेक किए गए चेकबॉक्स को सही सेट करना चाहता हूं कि आप हमें रिसाइकलर व्यू में कैसे ढूंढते हैं

How do you find us

अग्रिम में धन्यवाद

0
Karan Israni 6 फरवरी 2020, 08:56
1
कृपया अपना कोड साझा करें और स्पष्ट रूप से बताएं कि आप क्या हासिल करना चाहते हैं
 – 
Karan Mehta
6 फरवरी 2020, 08:58
प्रिय कोड जोड़ा गया
 – 
Karan Israni
6 फरवरी 2020, 09:08
आप इसे onBindViewHolder() विधि में कर सकते हैं, जब आपके पास सूची में सही आइटम है तो आप चेकबॉक्स कर सकते हैं। सेट चेक किया गया () = सत्य
 – 
Karan Mehta
6 फरवरी 2020, 09:10
स्ट्रिंग प्राप्त करना बूलियन नहीं है
 – 
Karan Israni
6 फरवरी 2020, 09:13
यदि स्ट्रिंग checkBox.setChecked(true) से सही है तो आप स्ट्रिंग की जाँच के लिए शर्त रख सकते हैं अन्यथा कुछ न करें
 – 
Karan Mehta
6 फरवरी 2020, 09:15

2 जवाब

आपको कदम दर कदम कुछ करना होगा:

1. आपको अपने json मान में "," गिनने वाले शब्दों की संख्या मिलनी चाहिए।

2. अपनी स्ट्रिंग को एक सरणी सूची में विभाजित करें (इस उदाहरण में इसकी सरणी सूची 5 स्ट्रिंग मान के साथ)

3. अब लूप के लिए, आपको स्विच केस के साथ सरणी में स्ट्रिंग की जांच करनी चाहिए।

4. उस सरणी में हर स्ट्रिंग एक स्विच केस में जाएगी, आप सभी वहां पहुंचे और प्रत्येक मामले में आप चेक बॉक्स सेट कर सकते हैं

मुझे टिप्पणियों में अपडेट करें;)

2
alireza daryani 6 फरवरी 2020, 09:11

आपको अपनी यूआई परत के लिए एक मॉडल परिभाषित करना होगा जो एपीआई कॉल से सीधे क्रमबद्ध मॉडल का उपयोग नहीं कर रहा है।
साथ ही, आपको 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;
}

आपके पास हर संभावित लौटाई गई स्ट्रिंग को एक स्थिर चर में मैप किया गया है जैसे अगर फेसबुक, ट्विटर लौटाया जाता है तो आपको इसे विभाजित करना होगा और इसे मैप करने के लिए हर एक मान की जांच करनी होगी

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);
    }
}

और फिर अपने व्यू होल्डर में, आपको उन मानों की सूची देखनी होगी जिन्हें आपको सेट करना है चेकबॉक्स को सत्य पर चेक किया गया है

0
Shalan93 6 फरवरी 2020, 13:01