如何在 android 中呈现 select 来自 json 对象的联系人?
How to render and select contacts from json object in android?
我从服务器收到的响应是 json,其中包含姓名和联系电话号码键及其值。我想显示姓名和联系电话详细信息以及一个复选框作为一列,以便用户可以 select 多个这些联系人,并且可以通过单击按钮将联系人发送到服务器。
我的 json 文件
{
"users": "[{\"id\":1,\"name\":\"test_name\",\"contact\":\"23456543\",\"gender\":\"F\",\"age\":234,\"city\":\"delhi\",\"state\":\"india\",\"created_at\":\"2015-07-19T17:58:42.000Z\",\"updated_at\":\"2015-07-19T17:58:42.000Z\",\"district\":\"test_district\"},{\"id\":2,\"name\":\"test_name\",\"contact\":\"23456543\",\"gender\":\"F\",\"age\":234,\"city\":\"delhi\",\"state\":\"india\",\"created_at\":\"2015-07-19T17:58:42.000Z\",\"updated_at\":\"2015-07-19T17:58:42.000Z\",\"district\":\"test_district\"},{\"id\":3,\"name\":\"qwrrtt\",\"contact\":\"1234567890\",\"gender\":\"F\",\"age\":12,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T18:01:16.000Z\",\"updated_at\":\"2015-07-19T18:01:16.000Z\",\"district\":\"Bokaro\"},{\"id\":4,\"name\":\"wetur\",\"contact\":\"1234567890\",\"gender\":\"F\",\"age\":22,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T18:41:17.000Z\",\"updated_at\":\"2015-07-19T18:41:17.000Z\",\"district\":\"Bokaro\"},{\"id\":5,\"name\":\"tfjko\",\"contact\":\"1234567990\",\"gender\":\"F\",\"age\":34,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:30:09.000Z\",\"updated_at\":\"2015-07-19T19:30:09.000Z\",\"district\":\"Bokaro\"},{\"id\":6,\"name\":\"tfjko\",\"contact\":\"1234567990\",\"gender\":\"F\",\"age\":34,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:30:22.000Z\",\"updated_at\":\"2015-07-19T19:30:22.000Z\",\"district\":\"Bokaro\"},{\"id\":7,\"name\":\"fghjk\",\"contact\":\"4567890123\",\"gender\":\"F\",\"age\":45,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:35:14.000Z\",\"updated_at\":\"2015-07-19T19:35:14.000Z\",\"district\":\"Bokaro\"},{\"id\":8,\"name\":\"cvbnm\",\"contact\":\"7894561203\",\"gender\":\"F\",\"age\":23,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:37:42.000Z\",\"updated_at\":\"2015-07-19T19:37:42.000Z\",\"district\":\"Bokaro\"},{\"id\":9,\"name\":\"tfjko\",\"contact\":\"1234567990\",\"gender\":\"F\",\"age\":34,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:53:14.000Z\",\"updated_at\":\"2015-07-19T19:53:14.000Z\",\"district\":\"Bokaro\"},{\"id\":10,\"name\":\"edgujn\",\"contact\":\"4894521360\",\"gender\":\"F\",\"age\":45,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-20T02:45:01.000Z\",\"updated_at\":\"2015-07-20T02:45:01.000Z\",\"district\":\"Bokaro\"},{\"id\":11,\"name\":\"qwert\",\"contact\":\"4568217390\",\"gender\":\"F\",\"age\":45,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-20T06:12:57.000Z\",\"updated_at\":\"2015-07-20T06:12:57.000Z\",\"district\":\"Bokaro\"},{\"id\":12,\"name\":\"surbhi\",\"contact\":\"1334567890\",\"gender\":\"F\",\"age\":12,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-20T07:17:53.000Z\",\"updated_at\":\"2015-07-20T07:17:53.000Z\",\"district\":\"Bokaro\"},{\"id\":13,\"name\":\"preefu\",\"contact\":\"5641287092\",\"gender\":\"F\",\"age\":56,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-20T07:23:54.000Z\",\"updated_at\":\"2015-07-20T07:23:54.000Z\",\"district\":\"Bokaro\"}]"
}
我现在将联系人和姓名放在单独的列表中。我应该怎么做才能将复选框放在那里? select将多个联系人发送并转发到服务器?
JSONObject ob = new JSONObject(strres);
List<String> allNames = new ArrayList<String>();
JSONArray cast = ob.getJSONArray("users");
for (int i=0; i<cast.length(); i++)
{
JSONObject actor = cast.getJSONObject(i);
String name = actor.getString("name");
allNames.add(name);
}
请为您的数据创建一个 Java pojo class。例如:
class 人{
字符串标识;
字符串名称;
boolean is selected;// 知道这个联系人是否被选中
}
将所有 Person 对象添加到 Arraylist
- 如果复选框被选中,则将 isSelected 设置为 true,反之亦然。
然后你可以将你的联系方式发送到服务器。
希望对您有所帮助。
就像 Priya Singhal 所说的那样:
public class Actor { //simplified
private int id;
private String name;
public Actor(){}
public Actor(int id, String name) {
this.id = id;
this.name = name;
}
}
JSONObject json = new JSONObject();
SparseArray<Actor> actors = new SparseArray<Actor>();
JSONArray actorsJSON = null;
try {
actorsJSON = json.getJSONArray("users");
for (int i=0; i<actorsJSON.length(); i++){
JSONObject actorJSON = actorsJSON.getJSONObject(i);
Actor actor = new Actor(actorJSON.getInt("id"), actorJSON.getString("name"));
actors.put(id, actor);
}
} catch (JSONException e) {
e.printStackTrace();
}
Offtopic:可能很多人都知道 SparseArray 对象,但可能其他人不知道。优点是具有 ArrayList 和 HashMap 行为,并且比 HashMap 更有效(除非您有数百个项目)。在这种情况下是一个不错的选择,因为您只有 13 个项目。
希望对您有所帮助!
我从服务器收到的响应是 json,其中包含姓名和联系电话号码键及其值。我想显示姓名和联系电话详细信息以及一个复选框作为一列,以便用户可以 select 多个这些联系人,并且可以通过单击按钮将联系人发送到服务器。
我的 json 文件
{
"users": "[{\"id\":1,\"name\":\"test_name\",\"contact\":\"23456543\",\"gender\":\"F\",\"age\":234,\"city\":\"delhi\",\"state\":\"india\",\"created_at\":\"2015-07-19T17:58:42.000Z\",\"updated_at\":\"2015-07-19T17:58:42.000Z\",\"district\":\"test_district\"},{\"id\":2,\"name\":\"test_name\",\"contact\":\"23456543\",\"gender\":\"F\",\"age\":234,\"city\":\"delhi\",\"state\":\"india\",\"created_at\":\"2015-07-19T17:58:42.000Z\",\"updated_at\":\"2015-07-19T17:58:42.000Z\",\"district\":\"test_district\"},{\"id\":3,\"name\":\"qwrrtt\",\"contact\":\"1234567890\",\"gender\":\"F\",\"age\":12,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T18:01:16.000Z\",\"updated_at\":\"2015-07-19T18:01:16.000Z\",\"district\":\"Bokaro\"},{\"id\":4,\"name\":\"wetur\",\"contact\":\"1234567890\",\"gender\":\"F\",\"age\":22,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T18:41:17.000Z\",\"updated_at\":\"2015-07-19T18:41:17.000Z\",\"district\":\"Bokaro\"},{\"id\":5,\"name\":\"tfjko\",\"contact\":\"1234567990\",\"gender\":\"F\",\"age\":34,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:30:09.000Z\",\"updated_at\":\"2015-07-19T19:30:09.000Z\",\"district\":\"Bokaro\"},{\"id\":6,\"name\":\"tfjko\",\"contact\":\"1234567990\",\"gender\":\"F\",\"age\":34,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:30:22.000Z\",\"updated_at\":\"2015-07-19T19:30:22.000Z\",\"district\":\"Bokaro\"},{\"id\":7,\"name\":\"fghjk\",\"contact\":\"4567890123\",\"gender\":\"F\",\"age\":45,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:35:14.000Z\",\"updated_at\":\"2015-07-19T19:35:14.000Z\",\"district\":\"Bokaro\"},{\"id\":8,\"name\":\"cvbnm\",\"contact\":\"7894561203\",\"gender\":\"F\",\"age\":23,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:37:42.000Z\",\"updated_at\":\"2015-07-19T19:37:42.000Z\",\"district\":\"Bokaro\"},{\"id\":9,\"name\":\"tfjko\",\"contact\":\"1234567990\",\"gender\":\"F\",\"age\":34,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-19T19:53:14.000Z\",\"updated_at\":\"2015-07-19T19:53:14.000Z\",\"district\":\"Bokaro\"},{\"id\":10,\"name\":\"edgujn\",\"contact\":\"4894521360\",\"gender\":\"F\",\"age\":45,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-20T02:45:01.000Z\",\"updated_at\":\"2015-07-20T02:45:01.000Z\",\"district\":\"Bokaro\"},{\"id\":11,\"name\":\"qwert\",\"contact\":\"4568217390\",\"gender\":\"F\",\"age\":45,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-20T06:12:57.000Z\",\"updated_at\":\"2015-07-20T06:12:57.000Z\",\"district\":\"Bokaro\"},{\"id\":12,\"name\":\"surbhi\",\"contact\":\"1334567890\",\"gender\":\"F\",\"age\":12,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-20T07:17:53.000Z\",\"updated_at\":\"2015-07-20T07:17:53.000Z\",\"district\":\"Bokaro\"},{\"id\":13,\"name\":\"preefu\",\"contact\":\"5641287092\",\"gender\":\"F\",\"age\":56,\"city\":\"Bokaro\",\"state\":\"Jharkhand\",\"created_at\":\"2015-07-20T07:23:54.000Z\",\"updated_at\":\"2015-07-20T07:23:54.000Z\",\"district\":\"Bokaro\"}]"
}
我现在将联系人和姓名放在单独的列表中。我应该怎么做才能将复选框放在那里? select将多个联系人发送并转发到服务器?
JSONObject ob = new JSONObject(strres);
List<String> allNames = new ArrayList<String>();
JSONArray cast = ob.getJSONArray("users");
for (int i=0; i<cast.length(); i++)
{
JSONObject actor = cast.getJSONObject(i);
String name = actor.getString("name");
allNames.add(name);
}
请为您的数据创建一个 Java pojo class。例如: class 人{ 字符串标识; 字符串名称; boolean is selected;// 知道这个联系人是否被选中
}
将所有 Person 对象添加到 Arraylist
- 如果复选框被选中,则将 isSelected 设置为 true,反之亦然。
然后你可以将你的联系方式发送到服务器。
希望对您有所帮助。
就像 Priya Singhal 所说的那样:
public class Actor { //simplified
private int id;
private String name;
public Actor(){}
public Actor(int id, String name) {
this.id = id;
this.name = name;
}
}
JSONObject json = new JSONObject();
SparseArray<Actor> actors = new SparseArray<Actor>();
JSONArray actorsJSON = null;
try {
actorsJSON = json.getJSONArray("users");
for (int i=0; i<actorsJSON.length(); i++){
JSONObject actorJSON = actorsJSON.getJSONObject(i);
Actor actor = new Actor(actorJSON.getInt("id"), actorJSON.getString("name"));
actors.put(id, actor);
}
} catch (JSONException e) {
e.printStackTrace();
}
Offtopic:可能很多人都知道 SparseArray 对象,但可能其他人不知道。优点是具有 ArrayList 和 HashMap 行为,并且比 HashMap 更有效(除非您有数百个项目)。在这种情况下是一个不错的选择,因为您只有 13 个项目。 希望对您有所帮助!