0

I have json response like:

{  
   "Users":[  
      {  
         "username":"Varun",
         "userid":"626"
      }
   ]
}

I want to add a user in spinner and as well as get userid to pass to the server here my code.

spinnerUser=new ArrayList<>();
                            //spinnerUser=new ArrayList<>();

                            //display first question to the user
                           try {
                               JSONArray jsonArray = (JSONArray) response.get("Users");
                              for (int i=0;i<jsonArray.length();i++)
                              {
                                  JSONObject json=jsonArray.getJSONObject(i);
                                  {
                                     /*User userData=new User();
                                      userData.setUsername(json.optString("username"));
                                      userData.setUserid(json.optString("userid"));
                                      jsonSpinner.add(userData);
                                      spinnerUser.add(json.optString("username"));*/
                                      String name = json.optString("username").toString();
                                      userid=json.optString("userId").toString();
                                      spinnerUser.add(name);


                                  }
                              }

                           }catch (Exception e)
                           {
                               e.printStackTrace();
                           }
                            ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),
                                 R.layout.simple_spinner_item, spinnerUser);

                            adapter.setDropDownViewResource(R.layout.simple_spinner_item);
                            user.setAdapter(adapter);

How can I achieve that.any help regarding on that please suggest me.

akhilesh0707
  • 6,709
  • 5
  • 44
  • 51
ashish
  • 307
  • 4
  • 15

3 Answers3

3

First create a POJO class User

 public class User {

    private String name;
    private  String userId;

    public String getName() {
        return name;
    }

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

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }
 @Override
    public String toString() {
        return name;
    }
}

Then change your code below

List<User> userList = new ArrayList<>();
spinnerUser = new ArrayList<>();
//display first question to the user
try {
    JSONArray jsonArray = (JSONArray) response.get("Users");
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject json = jsonArray.getJSONObject(i);
        String name = json.optString("username").toString();
        String userid = json.optString("userid").toString();
        User user = new User();
        user.setName(name);
        user.setUserId(userid);
        userList.add(user);
    }
} catch (Exception e) {
    e.printStackTrace();
}
ArrayAdapter<User> adapter = new ArrayAdapter<User>(getContext(), R.layout.simple_spinner_item, userList);
adapter.setDropDownViewResource(R.layout.simple_spinner_item);
user.setAdapter(adapter);

for accessing selected spinner item.

try below code

User selectedUser=(User) user.getSelectedItem();
Log.e("user Name", selectedUser.getName());
Log.e("user id", selectedUser.getuserId());
akhilesh0707
  • 6,709
  • 5
  • 44
  • 51
Vinayak B
  • 4,430
  • 4
  • 28
  • 58
1

Try this:

Store value and key in HashMap

private HashMap<String, String> hmapcat = new HashMap<>();

  String name = json.optString("username").toString();                                  
  String userid=json.optString("userId").toString();

     hmapcat.put(name,userid);

Then Onclick of Spinner you will get ID, try below logic.

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

                String items = spinner.getSelectedItem().toString();
                Log.i("Selected item : ", items);
            String id1=hmapcat.get(items );  // here you will get ids
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }

        });

I hope this will help you

UltimateDevil
  • 2,807
  • 2
  • 18
  • 31
Gowthaman M
  • 8,057
  • 8
  • 35
  • 54
0

"I" in userid is small in json object.

 userid=json.optString("userid").toString();

public class User()
{
     @SerializedName("userid")
     private String userid;
     @SerializedName("userName")
     private String userName;

     //define getter setter
}

User Gson to get of List. How to parse json parsing Using GSON in android

KKSINGLA
  • 1,284
  • 2
  • 10
  • 22