如何在列表视图中显示 json 数据?

Posted

技术标签:

【中文标题】如何在列表视图中显示 json 数据?【英文标题】:How to display json data in a listview? 【发布时间】:2020-01-06 02:53:44 【问题描述】:

我想查看列表视图中的 json 数据... 我试图创建一个新的对象类并收集数据以列出,但我认为我错了... 我尝试使用 TextView 来验证数据的正确传递,它似乎可以正常工作,但我需要在 listView 上显示它们...您有什么想法可以解决我的问题吗?

    public class LoggedActivity extends AppCompatActivity 

    private RequestQueue mQueue;
    private ListView lstView;
    private TextView mTextViewResult;
    Button buttonParse;


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


        lstView = findViewById(R.id.lstView);

        mTextViewResult = findViewById(R.id.text_view_result);
        buttonParse = findViewById(R.id.button_parse);

        Bundle extras = getIntent().getExtras();
        final String id_utente = extras.getString("id");



        mQueue = Volley.newRequestQueue(this);

        buttonParse.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                jsonParse(id_utente);
            
        );

    

    private void jsonParse(String id_utente) 

        class Prodotti 
            private String id;
            private String idUtente;
            private String nomeProdotto;

            public String getId() 
                return id;
            

            public void setId(String id) 
                this.id = id;
            

            public String getIdUtente() 
                return idUtente;
            

            public void setIdUtente(String idUtente) 
                this.idUtente = idUtente;
            

            public String getNomeProdotto() 
                return nomeProdotto;
            

            public void setNomeProdotto(String nomeProdotto) 
                this.nomeProdotto = nomeProdotto;
            
        

        final List<Prodotti> listaProdotti = new ArrayList<Prodotti>();

        String url = "http://192.168.1.5/progettophp/WebServices/webSrv.php?type=recuperaProdotti&idutente=" + id_utente;


        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() 
                    @Override
                    public void onResponse(JSONObject response) 

                        try 

                            JSONArray jsonArray = response.getJSONArray("Dati");

                            for (int i = 0; i < jsonArray.length(); i++) 

                                JSONObject dato = jsonArray.getJSONObject(i);

                                Prodotti prdt = new Prodotti();

                                prdt.setId(dato.getString("id"));
                                prdt.setIdUtente(dato.getString("id_utente"));
                                prdt.setNomeProdotto(dato.getString("nome_prodotto"));

                                listaProdotti.add(prdt);

                                //mTextViewResult.append(id + ", " + id_utente +  ", " + nome_prodotto +  "\n\n");
                            
                         catch (JSONException e) 
                            e.printStackTrace();
                        
                    
                , new Response.ErrorListener() 
            @Override
            public void onErrorResponse(VolleyError error) 

            
        );

        mQueue.add(request);


    


【问题讨论】:

查看一些关于Adapter + RecyclerView的教程。 ListView 已过时。 JSON Parsing to ListView android的可能重复 【参考方案1】:
    使用http://www.jsonschema2pojo.org/从json文件创建实体模型 使用Gson库填充模型https://github.com/google/gson 现在您有了一个漂亮的模型,其中包含您可以获取列表、添加排序和其他任何内容的数据 要显示此列表,请使用 recyclerView 或 listView 或 ...。 回收站查看https://developer.android.com/guide/topics/ui/layout/recyclerview 列表视图https://developer.android.com/reference/android/widget/ListView

【讨论】:

以上是关于如何在列表视图中显示 json 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在英特尔 xdk 的列表视图中显示 json 数据

如何在 Android JAVA 的列表视图中显示部分但不是全部 JSON 数据

如何在列表视图的每个项目上加载 json 数据并显示在 android 的另一个活动中获取的数据?

如何在可扩展列表视图中绑定 Json 数据?

如何根据 JSON 数据和过滤参数过滤列表视图?

如何在列表视图中显示来自arraylist的所有解析数据?