【问题标题】:how to get userid and user name into spinnenr and send userid to server如何将用户 ID 和用户名输入 spinnenr 并将用户 ID 发送到服务器
【发布时间】:2017-10-10 11:30:16
【问题描述】:

我有json 回复,例如:

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

我想在spinner 中添加一个用户,并在我的代码中获取用户 ID 以传递给服务器。

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

我怎样才能做到这一点。任何关于这方面的帮助请建议我。

【问题讨论】:

  • 您遇到错误了吗?
  • 没有任何错误,能够使用字符串获取用户名,但无法获取传递给服务器的用户 ID

标签: android json android-spinner


【解决方案1】:

首先创建一个POJO类用户

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

然后在下面更改您的代码

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

用于访问选定的spinner 项目。

试试下面的代码

User selectedUser=(User) user.getSelectedItem();
Log.e("user Name", selectedUser.getName());
Log.e("user id", selectedUser.getuserId());

【讨论】:

    【解决方案2】:

    试试这个:

    HashMap中存储值和键

    private HashMap<String, String> hmapcat = new HashMap<>();
    
      String name = json.optString("username").toString();                                  
      String userid=json.optString("userId").toString();
    
         hmapcat.put(name,userid);
    

    然后OnclickSpinner 你会得到ID,试试下面的逻辑。

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

    希望对你有帮助

    【讨论】:

    • @ashish 试试这个简单的逻辑。
    【解决方案3】:

    用户ID中的“I”在json对象中很小。

     userid=json.optString("userid").toString();
    
    public class User()
    {
         @SerializedName("userid")
         private String userid;
         @SerializedName("userName")
         private String userName;
    
         //define getter setter
    }
    

    用户 Gson 获取列表。 How to parse json parsing Using GSON in android

    【讨论】:

    • 我需要将其用户传递给服务器我该怎么做你能建议我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2012-06-11
    • 2019-02-13
    • 2015-04-06
    相关资源
    最近更新 更多