我尝试使用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
我该如何解决?
答案 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(), ...);