onClick() - newRequestQueue(this)和getApplicationContext()错误?

时间:2017-02-26 20:54:35

标签: android sharedpreferences android-volley

我尝试使用Volley进行newRequestQueue并获取SharedPreferences:

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
...
 class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
...

 @Override
        public void onClick(View v) {

...
            -> SharedPreferences pref = getApplicationContext().getSharedPreferences("pref01", MODE_PRIVATE);
            String username = pref.getString("username", "No name defined");

LRequest lRequest = new lRequest(pid, username);
            -> RequestQueue queue = Volley.newRequestQueue(this);
            queue.add(lRequest);

...

}

    }
}

问题是它在onClick()事件中,它给了我这个错误:

cannot resolve method getApplicationContext()

Volley cannot be apply to com.st.mf.CardAdapter.ViewHolder

我该如何解决?

1 个答案:

答案 0 :(得分:1)

简单地说,getApplicationContext()不是任何Adapter类的方法。你需要一个Context来获得SharedPreferences,是的。

同样适用于Volley.newRequestQueue(this);其中this用法需要Context,而不是适配器。

实际上,您从活动中调用Volley,然后从适配器填充适配器。

否则,如果你真的想要一个Context,那么你的构造需要一个。

public class CardAdapter extends ...
    private Context context;

    public CardAdapter(Context context, ...) {
        this.context = context;
        ...
    }

    ...

    context.getSharedPreferences("pref01", MODE_PRIVATE);

    ...

    RequestQueue queue = Volley.newRequestQueue(context);

然后在创建适配器时......

CardAdapter adapter = new CardAdapter(getApplicationContext(), ...);