Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RecyclerView NullPointerException中的问题_Android_Nullpointerexception_Android Recyclerview - Fatal编程技术网

Android RecyclerView NullPointerException中的问题

Android RecyclerView NullPointerException中的问题,android,nullpointerexception,android-recyclerview,Android,Nullpointerexception,Android Recyclerview,我想实现一个代码,其中数据将来自服务器,并显示在RecyclerView项上,下面是我的mainActivity类,我在其中从服务器获取数据,但此代码没有运行,只是因为NullPointerException。 我正在使用截击来获取数据 public class MainActivity_Plan extends AppCompatActivity { private List<Plan> planList = new ArrayList<>(); private Rec

我想实现一个代码,其中数据将来自服务器,并显示在RecyclerView项上,下面是我的mainActivity类,我在其中从服务器获取数据,但此代码没有运行,只是因为NullPointerException。 我正在使用截击来获取数据

public class MainActivity_Plan extends AppCompatActivity {
private List<Plan> planList = new ArrayList<>();
private RecyclerView recyclerView;
private PlanAdapter pAdapter;
private RequestQueue requestQueue;
String url;

// Session Manager Class
SessionManager session;
String matri_id;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.plan_activity);
    session = new SessionManager(this);
    HashMap<String, String> user = session.getUserDetails();
    matri_id = user.get(SessionManager.KEY_EMAIL);

    Log.e("matri_id+++++++++++++",matri_id);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
    pAdapter = new PlanAdapter(planList);
    RecyclerView.LayoutManager mLayoutManager = new 
    LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(pAdapter);
    getInfo();
    Log.e("url____________",url);
}

 private void getInfo() {
    url = ConfigPlan.DATA_URL+matri_id;
JsonArrayRequest截击

    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    //Calling method parseData to parse the json response
                    Log.e("response---------",response.toString());
                    parseData(response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //If an error occurs that means end of the list has reached
                    Toast.makeText(MainActivity_Plan.this, "No More Items Available", Toast.LENGTH_SHORT).show();
                }
            });

    requestQueue.add(jsonArrayRequest);
}
此方法将解析json数据

  private void parseData(JSONArray array) {
    for (int i = 0; i < array.length(); i++) {
        Plan p = new Plan();
        JSONObject json = null;
        try {
            json = array.getJSONObject(i);
            //Adding data to the superhero object
            p.setName(json.getString(ConfigPlan.KEY_PLAN_NAME));
            p.setAmount(json.getString(ConfigPlan.KEY_PLAN_AMOUNT));
            p.setDuration(json.getString(ConfigPlan.KEY_PLAN_DURATION));
            p.setContacts(json.getString(ConfigPlan.KEY_PLAN_CONTACTS));
            } catch (JSONException e) {
            e.printStackTrace();
        }
        //Adding the superhero object to the list
        planList.add(p);
    }
  }
}
下面是适配器类

public class PlanAdapter extends RecyclerView.Adapter<PlanAdapter.MyViewHolder> {

private List<Plan> planList;

public class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView plan_name, plan_duration, plan_contact, plan_amount;
    public Button subscribeButton;

    public MyViewHolder(View view) {
        super(view);
        plan_name = (TextView) view.findViewById(R.id.planName);
        plan_duration = (TextView)view.findViewById(R.id.planDuration);
        plan_contact = (TextView) view.findViewById(R.id.planContacts);
        plan_amount = (TextView) view.findViewById(R.id.planAmount);
        subscribeButton = (Button) view.findViewById(R.id.subscribeButton);
    }
}

public PlanAdapter(List<Plan> planList) {
    this.planList = planList;
}

@Override
public PlanAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext())
        .inflate(R.layout.plan_activity_item, parent, false);
    return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(PlanAdapter.MyViewHolder holder, int position) {
    Plan plan = planList.get(position);
    holder.plan_name.setText(plan.getName());
    holder.plan_amount.setText(plan.getAmount());
    holder.plan_contact.setText(plan.getContacts());
    holder.plan_duration.setText(plan.getDuration());
  }
  @Override
  public int getItemCount() {
     return 0;
  }
 }

完成代码解析后,请更新列表中的适配器。您必须将适配器代码放入OnResponse方法中。解析代码后。

我认为您可能没有根据共享错误图像初始化requestQueue类的requestQueue对象

没有初始化类requestQueue的requestQueue对象

您忘记pAdapter.notifyDataSetChanged;在planList Arraylist中添加数据后

在适配器类中更改此选项

getItemCount方法中的更改


可能重复粘贴StackTrace您忘记pAdapter.notifyDataSetChanged;在planList ArrayList中添加数据后是什么stacktrace@VikasGodiyalstacktrace表示崩溃报告或logcat错误请检查我发送适配器类的更新代码实际上数据不是来自服务器,因为logohh上没有显示响应,那么您需要处理Volley库为什么它没有给出响应。我不知道为什么它没有给出响应我使用了这个requestQueue=Volley.newRequestQueuethis;现在这个错误已经解决了,但是没有来自后端的数据。这里的函数大小是多少else@VikasGodiyal这是您的计划列表大小的问题this@VikasGodiyal你需要把你的头发染成红色RequestQueue@VikasGodiyal您是否在清单文件中添加了RequestQueue?我使用了这个RequestQueue=Volley.newRequestQueuethis;现在这个错误已经解决了,但是没有来自后端的数据。是否有任何错误打印在Logcat中。如果不是Log.ereresponse中的内容,则返回response.toString;。否则,请验证类型为java.lang.String的PostmanValue错误API是否无法转换为JSONArrayPlease共享,您将得到哪种响应?JSON数组响应
 @Override
      public int getItemCount() {
         return planList.size;
      }