【发布时间】:2018-03-23 16:55:50
【问题描述】:
我可以解析json并用listview列出来。
我想从 json 中删除两个相同的元素,我只想列出一个。
代码:
public class MainActivity extends AppCompatActivity {
ArrayList<Product> arrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arrayList = new ArrayList<>();
runOnUiThread(new Runnable() {
@Override
public void run() {
new ReadJSON().execute(url);
}
});
}
class ReadJSON extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
return readURL(params[0]);
}
@Override
protected void onPostExecute(String content) {
try {
JSONObject jsonObject = new JSONObject(content);
JSONArray jsonArray = jsonObject.getJSONArray("School");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject c = jsonArray.getJSONObject(i);
JSONArray server = c.getJSONArray("Names");
for(int j=0; j<server.length(); j++){
JSONObject serverObject = server.getJSONObject(j);
arrayList.add(new Product(
serverObject.getString("id"),
serverObject.getString("name")
));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
NewtAdapter adapter = new NewtAdapter(
getApplicationContext(), R.layout.list, arrayList
);
ListView listview = (ListView) findViewById(R.id.listView);
listview.setAdapter(adapter);
}
}
}
json 文件:
{
"School":[
{
"Names":[
{"id":"1", "name":"John"},
{"id":"2", "name":"Amanda"},
{"id":"3", "name":"Robert"},
{"id":"4", "name":"Jackie"},
{"id":"5", "name":"Palma"},
{"id":"1", "name":"Walcott"}
]
}
]
}
输出:
1 - 约翰
2 - 阿曼达
3 - 罗伯特
4 - 杰基
5 - 帕尔马
1 - 沃尔科特
我想删除相同的 ID,只想列出一个。
输出应该是这样的:
1 - 约翰
2 - 阿曼达
3 - 罗伯特
4 - 杰基
5 - 帕尔马
我该怎么做?
谢谢。
【问题讨论】:
-
使用
Set或Object。或者使用ArrayList,您可以在添加新项目之前检查重复项目。