Android RecyclerView NullPointerException中的问题
我想实现一个代码,其中数据将来自服务器,并显示在RecyclerView项上,下面是我的mainActivity类,我在其中从服务器获取数据,但此代码没有运行,只是因为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
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;
}