【问题标题】:How do I display some but not all JSON data in a list view in Android JAVA如何在 Android JAVA 的列表视图中显示部分但不是全部 JSON 数据
【发布时间】:2021-08-03 01:05:29
【问题描述】:

我正在尝试将我使用 URL 检索到的 JSON 文件中的一些但不是全部信息显示到 Android JAVA 中的列表视图中。 JSON 有很多字段,但我只想要其中两个。我已经设法在 iOS 中完成了相同的应用程序,并且不得不将这些字段设为可选,但我不确定如何在 Android 中执行此操作。

主活动

public class MainActivity extends AppCompatActivity {

private ListView lv;

String username, online;

private static String JSON_URL = "http://**.***.**.***:*****/userconfig";

ArrayList<HashMap<String, String>> usersList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    usersList = new ArrayList<>();
    lv = findViewById(R.id.listView);

    GetData getData = new GetData();
    getData.execute();


}

public class GetData extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... strings) {
        String current = "";

        try {
            URL url;
            HttpURLConnection urlConnection = null;

            try {
                url = new URL(JSON_URL);
                urlConnection = (HttpURLConnection) url.openConnection();

                InputStream in = urlConnection.getInputStream();
                InputStreamReader isr = new InputStreamReader(in);

                int data = isr.read();
                while (data != -1) {

                    current += (char) data;
                    data = isr.read();

                }

                return current;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (urlConnection != null) {
                    urlConnection.disconnect();
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

            return current;
        }

    @Override
    protected void onPostExecute(String s) {
        try {
            JSONObject jsonObject = new JSONObject(s);
            JSONArray jsonArray = jsonObject.getJSONArray("users");

            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject1 = jsonArray.getJSONObject(i);

                username = jsonObject1.getString("username");
                online = jsonObject1.getString("online");

                //Hashmap
                HashMap<String, String> friends = new HashMap<>();

                friends.put("username", username);
                friends.put("online", online);

                usersList.add(friends);


            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        //Display the results

        ListAdapter adapter = new SimpleAdapter(
                MainActivity.this,
                usersList,
                R.layout.row_layout,
                new String[] {"username", "online"},
                new int[]{R.id.textView, R.id.textView2});

        lv.setAdapter(adapter);
    }
}

}

【问题讨论】:

    标签: java android json listview url


    【解决方案1】:

    看起来没有办法使用 SimpleAdapter(我已经找到)来做到这一点。您可以使用 ListView 的自定义适配器来执行此操作。您可以通过创建一个从 ArrayAdapter 或 BaseAdapter 扩展的适配器类来做到这一点(看起来像一个示例实现以供参考:ListView ArrayAdapter, hiding children inside Row?)。然后在您的 getView 实现中,您可以检查您想要隐藏的条目并相应地设置它们的可见性。

    【讨论】:

      猜你喜欢
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2020-01-06
      • 2017-12-30
      • 2012-08-28
      相关资源
      最近更新 更多