【问题标题】:how to get id of the selected items of ListView where the data is coming from sever in Json format如何以Json格式获取数据来自服务器的ListView的选定项目的ID
【发布时间】:2017-12-28 09:27:19
【问题描述】:
my JSON:
{
    "data": [
        {
            "identity": 1,
            "email": "riya@gmail.com"
        },
        {
            "identity": 2,
            "email": "riya@gmail.com"
        },
        {
            "identity": 3,
            "email": "priyanka@o2h.com"
        },
        {
            "identity": 4,
            "email": "priyanka@o2h.com"
        },
        {
            "identity": 5,
            "email": "abcd@gmail.com"
        },
        {
            "identity": 6,
            "email": "abcd@gmail.com"
        },
        {
            "identity": 7,
            "email": "abcd@gmail.com"
        },
        {
            "identity": 8,
            "email": "priya@gmail.com"
        },
        {
            "identity": 9,
            "email": "priya@gmail.com"
        },
        {
            "identity": 10,
            "email": "priya@gmail.com"
        },
        {
            "identity": 11,
            "email": "priya@gmail.com"
        },
        {
            "identity": 12,
            "email": "priya@gmail.com"
        },
        {
            "identity": 13,
            "email": "priya@gmail.com"
        },
        {
            "identity": 14,
            "email": "jaya@gmail.com"
        },
        {
            "identity": 15,
            "email": "jaya@gmail.com"
        },
        {
            "identity": 16,
            "email": "priyanka@o2h.com"
        },
        {
            "identity": 17,
            "email": "jaya@gmail.com"
        },
        {
            "identity": 18,
            "email": "kinjal@gmail.com"
        },
        {
            "identity": 19,
            "email": "kinjal@gmail.com"
        },
        {
            "identity": 20,
            "email": "kinjal@gmail.com"
        },
        {
            "identity": 21,
            "email": "priyankapatell@o2h.com"
        },
        {
            "identity": 22,
            "email": "priyankapatelle@o2h.com"
        },
        {
            "identity": 23,
            "email": "priyankapatelre@o2h.com"
        },
        {
            "identity": 24,
            "email": "priyankart@o2h.com"
        },
        {
            "identity": 25,
            "email": "priyankarthjjk@o2h.com"
        },
        {
            "identity": 26,
            "email": "priyajjk@o2h.com"
        },
        {
            "identity": 27,
            "email": "riya@gmail.com"
        },
        {
            "identity": 28,
            "email": "risha@gmail.com"
        },
        {
            "identity": 29,
            "email": "rishad@gmail.com"
        },
        {
            "identity": 30,
            "email": "rishaTiwari@gmail.com"
        },
        {
            "identity": 31,
            "email": "textview"
        },
        {
            "identity": 32,
            "email": "textw"
        },
        {
            "identity": 33,
            "email": "tetw"
        },
        {
            "identity": 34,
            "email": "Textdddd"
        },
        {
            "identity": 35,
            "email": "tevvtw"
        },
        {
            "identity": 36,
            "email": "Textdhdjdk"
        },
        {
            "identity": 37,
            "email": "TextVlfggfg"
        },
        {
            "identity": 38,
            "email": "TextViewllkk"
        },
        {
            "identity": 39,
            "email": "TextViewghjm"
        },
        {
            "identity": 40,
            "email": "Te"
        },
        {
            "identity": 41,
            "email": "TextView133"
        },
        {
            "identity": 42,
            "email": "TextViewjkgjk"
        },
        {
            "identity": 43,
            "email": "TextViewIhhh"
        },
        {
            "identity": 47,
            "email": "TextViewhskslsld"
        },
        {
            "identity": 48,
            "email": "TextViewakskks"
        },
        {
            "identity": 49,
            "email": "TextVisjskdldk"
        },
        {
            "identity": 50,
            "email": "TedudidoxtView"
        },
        {
            "identity": 51,
            "email": "TextViewhddkdk"
        }
    ]
}

第 1 步:从 JSON 数据映射中获取值 key:value => identity:email。

第 2 步:在 ListView 中显示电子邮件。

第 3 步:从 ListView 中选择电子邮件。

第 4 步:在下一个活动中显示选定的电子邮件。

step-5:获取选中邮件的key。

现在请告诉我该怎么做? 我正在使用 volley 库来获取数据,我可以在列表视图中显示电子邮件,并将选定的 ListView 放在下一个活动中,但是如何为我的帖子请求获取电子邮件的 ID?

【问题讨论】:

    标签: android listview get android-volley key-value


    【解决方案1】:

    创建可序列化类

    public class DataClass implements Serializable {
    
        public int id;
        public String email;
    }
    

    创建数据类列表

    List<DataClass> selectedList;
    

    把你的数据放在 selectedList 上

        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int 
            position,long arg3) {
                   //add validation email is already selected
                   DataClass data = new DataClass();
                   data.email = list.get(position).email;
                   data.id = list.get(position).Id;
                   selectedList.add(data);
                }
            });
    

    根据你的意图

    Bundle bundle = new Bundle();
    bundle.putSerializable("value", selectedList);
    intent.putExtras(bundle);
    

    在第二个活动中获取选定的电子邮件数据并执行发布请求

       @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.second);
    
            Intent intent = this.getIntent();
            Bundle bundle = intent.getExtras();
    
            List<DataClass> datas=
                   (List<DataClass>)bundle.getSerializable("value");
            doPostRequest(datas) // you can get your id's and email's on selected on list
        }
    

    【讨论】:

      【解决方案2】:
      1. 覆盖 ListView 的 setOnitemClickListener
      2. 然后使用 'Position' 参数获取所选项目的 id。

      【讨论】:

      • 这将获得数组索引的 id(位置),但我想获取我在帖子中显示的密钥,以便我可以为下一个帖子请求提供该 id。
      • 试试这个 try { JSONObject main = new JSONObject("MyJSON"); JSONArray myData = main.getJSONArray("data");字符串电子邮件 = myData.get(position); } catch (JSONException e) { e.printStackTrace(); }
      【解决方案3】:

      从列表视图中获取选定的项目 ID,如下尝试,

          listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
      
             // get you clicked item posion here
             Log.e("USERID",list.get(position).getId+"");
             Log.e("USEREMAIL",list.get(position).getEmail+"");
          }
      });
      

      希望对你有帮助,祝你一切顺利。

      【讨论】:

      • 谢谢,但我想将身份映射为数组中的 emai 键,我在 json 中与电子邮件一起获取,以便我可以将该身份传递给包含选定项目的发布请求。
      【解决方案4】:

      将此数组列表设置为列表视图,列表视图中选择的项目使用列表视图位置从列表中获取电子邮件。

      示例: email = list.get(i).getEmail();

       Arraylist<Pojo> list=new Arraylist();
          JsonArray jsonArray=new JsonArray("data");
          for(int i=0;i<jsonArray;i++)
          {
             JsonObject jobject=jsonArray.getJsonObject(i);
             String identity=jobject.getString("identity");
             String email=jobject.getString("email");
             Pojo pojo=new Pojo(identity,email);
             list.add(pojo)
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多