具有空指针异常的RecyclerView

编程入门 行业动态 更新时间:2024-10-27 14:20:40
本文介绍了具有空指针异常的RecyclerView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在从CMS中获取一些新闻数据,并希望在RecyclerView中显示它们.问题是我在使用LinearLayoutManager的行中遇到了空指针异常.这是logcat的输出.

I am getting some news data from my CMS,and want to display them in a RecyclerView.The problem is that I am getting a null pointer exception in the line where I using the LinearLayoutManager. Here is the logcat output.

Caused by: java.lang.NullPointerException at testing.theo.manchesterunitedapp.newsandfeatures.FeaturesFragment.onCreateView(FeaturesFragment.java:65) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171) at android.app.Activity.performStart(Activity.java:5241) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2157) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5001)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)

我在其中做网络服务部分的片段非常简单.我使用回调方法.在其中初始化ArrayList和RecyclerView的onCreateView上,其次在运行Web服务的onActivityCreate上.

The Fragment where I am doing the webservice part is quite simple. I use to callback methods. The onCreateView where I am initialising the ArrayList and the RecyclerView,and secondly the onActivityCreate where I am running the webservice.

public class FeaturesFragment extends Fragment { public static final String TAG = "ManuApp"; private static final String IMAGE_URL = "xxxxxxxxxxxx/xxxx/features_images/" ; private List<FeaturesObject> listItemsList; private RecyclerView mRecyclerView; private FeaturesAdapter adapter; public FeaturesFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.features_row, container, false); // Inflate the layout for this fragment listItemsList = new ArrayList<>(); mRecyclerView = (RecyclerView)v.findViewById(R.id.features_recycler_view); //mRecyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(getActivity()).color(Color.BLACK).build()); final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity()); mRecyclerView.setLayoutManager(linearLayoutManager); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); updateFeaturesList(); } public void updateFeaturesList() { //declare the adapter and attach it to the recyclerview adapter = new FeaturesAdapter(getActivity(), listItemsList); mRecyclerView.setAdapter(adapter); // Instantiate the RequestQueue. RequestQueue queue = Volley.newRequestQueue(getActivity()); // Request a string response from the provided URL. JsonArrayRequest jsObjRequest = new JsonArrayRequest(Request.Method.GET, Config.URL_FEATURES, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { Log.d(TAG, response.toString()); //hidePD(); // Parse json data. // Declare the json objects that we need and then for loop through the children array. // Do the json parse in a try catch block to catch the exceptions try { for (int i = 0; i < response.length(); i++) { JSONObject post = response.getJSONObject(i); FeaturesObject item = new FeaturesObject(); item.setTitle(post.getString("title")); item.setImage(IMAGE_URL + post.getString("features_image")); item.setArticle(post.getString("article")); listItemsList.add(item); } } catch (JSONException e) { e.printStackTrace(); } // Update list by notifying the adapter of changes adapter.notifyDataSetChanged(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); //hidePD(); } }); jsObjRequest.setRetryPolicy(new RetryPolicy() { @Override public int getCurrentTimeout() { return 50000; } @Override public int getCurrentRetryCount() { return 50000; } @Override public void retry(VolleyError error) throws VolleyError { } }); queue.add(jsObjRequest); } }

这部分代码会导致问题.

This part of the code causes the problem.

final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity()); mRecyclerView.setLayoutManager(linearLayoutManager);

这很奇怪,因为我使用相同的技术来获取应用程序另一个片段中的数据.

This is strange,as I am using the same techiques to obtain data in another fragment of my app.

有什么想法吗?

谢谢.

推荐答案

您的RecyclerView为空.您确定要在正确的布局文件中寻找正确的ID吗?我的猜测是您正在填充错误的布局文件,或者正在寻找RecyclerView的错误视图ID.

Your RecyclerView is null. Are you sure you're looking for the correct id in the correct layout file? My guess is either you are inflating the incorrect layout file, or you're looking for the incorrect view id for the RecyclerView.

更多推荐

具有空指针异常的RecyclerView

本文发布于:2023-11-05 19:45:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1561679.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:指针   异常   RecyclerView

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!