获取字符串从片段到非活动类,然后转换为JSONObject
我想将片段I传递给非活动类并将字符串转换为JSONObject。获取字符串从片段到非活动类,然后转换为JSONObject
在我的片段我存储的字符串,我需要在一个共享偏好
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.store_list, container, false);
//super.onCreate();
VolleyGet.getInstance(getActivity());
VolleyGet.getInstance().VolleyGET(domain, api, new CustomListener<String>(){
@Override
public void getResult(String result){
if (!result.isEmpty())
{
Log.e("storelist---------->", result);
SharedPreferences sp1=getActivity().getSharedPreferences("storeList", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp1.edit();
editor.putString("storeList", result);
editor.commit();
}
}
});
在我的非活性类我试图获取共享的偏好是这样的:
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder>{
Context context;
JSONArray storeArray;
SharedPreferences preferences = context.getSharedPreferences("storeList", Activity.MODE_PRIVATE);
String storeList = preferences.getString("storeList", "");
System.out.println("storelist", storeList);
storeArray = new JSONArray(storeList);
JSONObject jObj = storeArray.getJSONObject(0);
List<Movie> mItems;
public CardAdapter() {
super();
mItems = new ArrayList<Movie>();
Movie movie = new Movie();
movie.setName("this will come from the JSONObject");
movie.setThumbnail(R.drawable.will come from JSONObject);
mItems.add(movie);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.store_cardview, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
Movie movie = mItems.get(i);
viewHolder.tvMovie.setText(movie.getName());
viewHolder.imgThumbnail.setImageResource(movie.getThumbnail());
}
@Override
public int getItemCount() {
return mItems.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
public ImageView imgThumbnail;
public TextView tvMovie;
public ViewHolder(View itemView) {
super(itemView);
imgThumbnail = (ImageView)itemView.findViewById(R.id.img_thumbnail);
tvMovie = (TextView)itemView.findViewById(R.id.tv_movie);
}
}
}
我在1.cannot解决符号println错误2.Unknown类:storelist 3.storearray也是未知的
请大家帮忙,谢谢!
首先,您不能System.out.println
或访问未经初始化的上下文,您已经完成它(超出您的问题范围)。
关于其他错误,我不认为你已经显示了正确的代码,但如果错误显示“storelist”,那么你的变量实际上是storeList
,所以看起来像一个错字。
看看RecyclerView适配器的任何教程,构造函数通常提供上下文。这就是你需要访问SharedPreferences的东西。
public class CardAdapter extends
RecyclerView.Adapter<CardAdapter.ViewHolder> {
private JSONArray mArray;
private Context mContext;
private SharedPreferences mPrefs;
public CardAdapter(Context context) {
mContext = context;
mPrefs = context.getSharedPreferences("storeList", Activity.MODE_PRIVATE);
mArray = new JSONArray(mPrefs.getString("storeList", "[]"));
}
}
关于你的评论_你不能只在print_n之外的方法_不在块之外,以确切地;) – AxelH
是的,因此“你已经做了它” –
你不能只在方法外println –
你真的需要适配器中的共享首选项吗?为什么不能在创建适配器之前提取json数组/对象? –
@ cricket_007我可以在外面提取它,但我仍然想知道如何获得课堂中的共享偏好,谢谢! – JerryKo