java - Android - 使用 Volley 显示自定义 ListView (使用 http 请求发送 header )

标签 java android listview android-volley

我对 android 开发有点陌生,我正在尝试使用 Volley 库创建一个自定义 ListView ,其中包含图像列表和每个图像的文本描述。 我需要知道的是如何使用 header 发出 HTTP 请求,以便服务器让我获取数据。 我的代码如下所示: 主 Activity .java

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

    listView = (ListView) findViewById(R.id.list);
    adapter = new CustomListAdapter(this, restaurantList);
    listView.setAdapter(adapter);

    pDialog = new ProgressDialog(this);
    // Showing progress dialog before making http request
    pDialog.setMessage("Loading...");
    pDialog.show();

    // changing action bar color
    getActionBar().setBackgroundDrawable(
            new ColorDrawable(Color.parseColor("#1b1b1b")));

    // Creating volley request obj
    JsonArrayRequest restaurantReq = new JsonArrayRequest(url,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    Log.d(TAG, response.toString());
                    hidePDialog();
                    JSONObject obj = null;
                    // Parsing json
                    for (int i = 0; i < response.length(); i++) {
                        try {
                            obj = response.getJSONObject(i);
                            Restaurant restaurant = new Restaurant();
                            restaurant.setID(obj.getString("id"));
                            restaurant.setName(obj.getString("name"));
                            restaurant.setDescription(obj
                                    .getString("description"));
                            restaurant.setType(obj.getString("type"));
                            restaurant.setCategory(obj
                                    .getString("category"));
                            restaurant.setPicture(obj.getString("picture"));
                            restaurant.setLongitude(obj
                                    .getString("longitude"));
                            restaurant.setLatitude(obj
                                    .getString("latitudes"));


                        }

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

                    }
                    try {
                        Log.e("TAGGGGGGGGG", obj.getString("description"));
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                    // notifying list adapter about data changes
                    // so that it renders the list view with updated data
                    adapter.notifyDataSetChanged();
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    hidePDialog();

                }

                public Map<String, String> getHeaders()
                        throws AuthFailureError {
                    HashMap<String, String> headers = new HashMap<String, String>();
                    headers.put("ghfhfhfhfgh", "fghfhfghf");
                    headers.put("fgfghfhf", "fghfhf");
                    headers.put("gfhfghfghfghfgh", "fghfg/fghfghfhfgh");
                    return headers;
                }
            });

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(restaurantReq);
}

最佳答案

        }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.e("Error: ", error.toString());
                }
        }) {  // Add this

        @Override           
        public Map<String, String> getHeaders() throws AuthFailureError {
               Map<String, String> headers = new HashMap<String, String>();
               headers.put("xxx", xxx);
               return headers;
            }
       };

关于java - Android - 使用 Volley 显示自定义 ListView (使用 http 请求发送 header ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25134132/

相关文章:

java - 如何在打印单行的同时使用扫描仪指定值?

c++ - 如何将 C++ 中的 QStringList 显示到 QML ListView

android - 使用新数据从 simpleAdapter 更新 listview

java - ibatis isNotEmpty 具有多个变量

java - 有限制的分区

java - 以编程方式在 JTable 中选择一行

android - notifyDataSetChanged() 在 daimajia AndroidSwipeLayout 中不起作用

android seekbar progressdrawable : background bitmap doesnt stretch (height)

android - 选择时更改 Android BottomBar 图标

ListView 选择已更改,无法在触摸设备上工作 - Windows 8 商店应用程序