【问题标题】:Android listview from json array来自json数组的Android listview
【发布时间】:2017-03-10 11:03:05
【问题描述】:

我是 android 新手,正在尝试填充列表视图。

当我使用数组“months”时,列表会正确填充,但是当我尝试使用“myFamily”时,列表是空的。

为什么会这样?

myFamily 数组如下:

[免费婴儿吉尼斯啤酒,2-4-1 鸡尾酒,本周葡萄酒 21 英镑,无限咖啡 5 英镑,单伏特加红牛 5 英镑,买一送一(中午 12 点至晚上 8 点)]

完整代码:

public class offers extends AppCompatActivity {

    private String jsonResponse;

    private String[] months = { "JAN", "FEB", "MAR", "APR", "MAY", "JUNE", "JULY",
            "AUG", "SEPT", "OCT", "NOV", "DEC" };


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

        final String PREFS_NAME = "userDefaults";
        final ListView myListView = (ListView) findViewById(R.id.listViewOffers);

        SharedPreferences settings_get = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        final String smartCode2 = settings_get.getString("smartCode2", "");

        final ArrayList<String> myFamily = new ArrayList<>();

        RequestQueue queue = Volley.newRequestQueue(offers.this);
        String url = "http://www.barfibrenetwork.co.uk/backend/androidoffers.php?smartcode="+smartCode2;
// Request a string response from the provided URL.

        JsonArrayRequest req = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                       // Log.d(TAG, response.toString());

                        try {
                            // Parsing json array response
                            // loop through each json object
                            jsonResponse = "";
                            for (int i = 0; i < response.length(); i++) {

                                JSONObject person = (JSONObject) response
                                        .get(i);

                                String name = person.getString("offertitle");



                                Log.i("OFFERTITLE:", name);
                               myFamily.add(name);
                            }

                            Log.i("REPLY:", String.valueOf(myFamily));



                        } catch (JSONException e) {
                            e.printStackTrace();
                            Toast.makeText(getApplicationContext(),
                                    "Error: " + e.getMessage(),
                                    Toast.LENGTH_LONG).show();
                        }


                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.i("Error: ", error.getMessage());
                Toast.makeText(getApplicationContext(),
                        error.getMessage(), Toast.LENGTH_SHORT).show();

            }
        });

// Add the request to the RequestQueue.

        queue.add(req);



        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.activity_list_item, android.R.id.text1, myFamily );


        myListView.setAdapter(arrayAdapter);




    }

【问题讨论】:

  • 在 for() 循环完成后将适配器设置在 try{ } 块中,而不是在最后设置
  • 你检查过你是否从电话中得到任何回应吗?
  • 惊人的@BhavikMehta !谢谢。
  • @MattBlack:永远欢迎你,伙计

标签: android json listview


【解决方案1】:

是 JSON 格式示例

{["示例字符串", "示例字符串 2"]}

您应该有类似的 JSON 格式。不要忘记屏蔽特殊符号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多