如何使用齐射发布布尔值

时间:2016-03-25 05:40:13

标签: java android android-volley

我试图使用volley库发布布尔值。当单击一个按钮时,布尔值设置为true。然后将布尔值发布到我的php脚本以在我的mysql数据库中递增计数器。我在尝试向队列添加请求时收到错误。我究竟做错了什么?这是我的代码

        holder.custom_button.setOnClickListener(new View.OnClickListener() {
            int count;


            @Override
            public void onClick(View v) {

                count = 0;

                superHeroes.get(position).setCount(superHeroes.get(position).getCount() + 1);
                holder.txtCount.setText(superHeroes.get(position).getCount() + "");


                final String url = "http://10.0.2.2/likes.php";

                isLiked = true;

                JSONObject obj = new JSONObject();

                try {
                    obj.put("isLiked", true);
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                JsonObjectRequest jsObjRequest = new JsonObjectRequest

                        (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {


                            @Override
                            public void onResponse(JSONObject response) {

                            }
                        }, new Response.ErrorListener() {

                            @Override
                            public void onErrorResponse(VolleyError error) {
                                // TODO Auto-generated method stub

                            }
                        });

// Access the RequestQueue through your singleton class.
// i am getting error here
                customVolleyRequest.getInstance(this).addToRequestQueue(jsObjRequest);

            }


        });

SINGLETON

package net.simplifiedcoding.myfeed;

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;

import com.android.volley.Cache;
import com.android.volley.Network;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.BasicNetwork;
import com.android.volley.toolbox.DiskBasedCache;
import com.android.volley.toolbox.HurlStack;
import com.android.volley.toolbox.ImageLoader;
/**
 * Created by Belal on 12/5/2015.
 */

public class CustomVolleyRequest {

    private static CustomVolleyRequest customVolleyRequest;
    private static Context context;
    private RequestQueue requestQueue;
    private ImageLoader imageLoader;

    private CustomVolleyRequest(Context context) {
        this.context = context;
        this.requestQueue = getRequestQueue();

        imageLoader = new ImageLoader(requestQueue,
                new ImageLoader.ImageCache() {
                    private final LruCache<String, Bitmap>
                            cache = new LruCache<String, Bitmap>(20);

                    @Override
                    public Bitmap getBitmap(String url) {
                        return cache.get(url);
                    }

                    @Override
                    public void putBitmap(String url, Bitmap bitmap) {
                        cache.put(url, bitmap);
                    }
                });
    }

    public static synchronized CustomVolleyRequest getInstance(Context context) {
        if (customVolleyRequest == null) {
            customVolleyRequest = new CustomVolleyRequest(context);
        }
        return customVolleyRequest;
    }

    public RequestQueue getRequestQueue() {
        if (requestQueue == null) {
            Cache cache = new DiskBasedCache(context.getCacheDir(), 10 * 1024 * 1024);
            Network network = new BasicNetwork(new HurlStack());
            requestQueue = new RequestQueue(cache, network);
            requestQueue.start();
        }
        return requestQueue;
    }

    public ImageLoader getImageLoader() {
        return imageLoader;
    }
}

ERROR

'getInstance(android.content.Context)' in 'net.simplifiedcoding.myfeed.CustomVolleyRequest' cannot be applied to '(anonymous android.view.View.OnClickListener)'

1 个答案:

答案 0 :(得分:2)

提出POST请求。你应该这样做:

JsonObjectRequest req = new JsonObjectRequest( Request.Method.POST, url,
      new JSONObject(jsonParams),
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                // Handle response
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
              //   Handle Error
            }
        }) {
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("Content-Type", "application/json; charset=utf-8");
        return headers;
    }
};
AppController.getInstance().addToRequestQueue(req); // AppController is Volley Singleton.

您使用过CardAdapter,我不是那样的。您应始终将请求对象添加到Volley SingletonReference