Etkinliğim için geri dönüştürücü görünümü uygulamak istiyorum ancak NullPointerException değerini dönüş boyutunda almaya devam ediyorum. Geri dönüşümcü görünümünde hızlı bir yenileme yapmak istiyorum. Hata kaydı da sağlandı. Tavsiye lütfen. Herhangi bir yardım gerçekten takdir edilmektedir. Aşağıda gösterildiği gibiDönüş boyutu döndüğünde bağdaştırıcıdaki boş gösterici
kodu:
MainActivity.java
private JobAdapter adapter;
private List<Job> listJob;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.list_job, container, false);
swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefreshLayout);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
adapter = new JobAdapter(getActivity());
recyclerView.setAdapter(adapter);
if (savedInstanceState != null) {
Logging.m("TabActive: Job is empty");
} else {
parseResponse();
}
//update adapter to containing the retrieved job
adapter.setJob(listJob);
return view;
}
private void parseResponse(){
if(response==null || response.length()==0){
return;
}
try{
JSONObject jObjstats = new JSONObject(response);
status = jObjstats.getString(Keys.EndPoint.KEY_RETURN);
if (!status.equalsIgnoreCase("success")){
reason = jObjstats.getString(Keys.EndPoint.KEY_RETURN);
if (reason.equalsIgnoreCase("No Found")) {
recyclerView.setBackground(getResources().getDrawable(R.drawable.bg1));
}
}
else if(status.equalsIgnoreCase("success")){
booking = jObjstats.getString(Keys.EndPoint.KEY_BOOKING);
JSONArray jArray = new JSONArray(booking);
for(int i = 0; i<jArray.length(); i++) {
Job setJob = new Job();
JSONObject json = null;
try {
json = jArray.getJSONObject(i);
setJob.setRef(json.getString("ref"));
setJob.setPhone(json.getString("contact"));
setJob.setNote(json.getString("notes"));
} catch (JSONException e) {
Log.i(TAG, e.toString()+" Volley error");
e.printStackTrace();
}
listJob.add(setJob);
}
adapter.setJob(listJob);
//Adding adapter to recycler view
recyclerView.setAdapter(adapter);
}
}
catch(Exception e){
Log.i(TAG, e.getMessage());
}
}
JobAdapter.java
public class JobAdapter extends RecyclerView.Adapter<JobAdapter.ViewHolderJob> {
private static final String TAG = "Job Adapter";
private Context context;
private List<Job> Job;
private LayoutInflater mInflater;
public JobAdapter(Context context){
mInflater = LayoutInflater.from(context);
this.context = context;
}
public void setJob(List<Job> Job) {
this.Job = Job;
//update the adapter to reflect the new of job
notifyDataSetChanged();
}
@Override
public ViewHolderJob onCreateViewHolder(ViewGroup parent, int viewType) {
View v = mInflater.inflate(R.layout.fragment_list_job, parent, false);
ViewHolderJob viewHolder = new ViewHolderJob(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolderJob holder, int position) {
//Getting the particular item from the list
final Job job = Job.get(position);
holder.tvServiceType.setText(job.getServiceType());
holder.tvFromPoint.setText(job.getFromPoint());
holder.tvDestPoint.setText(job.getDestPoint());=
holder.mainLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
Intent intent = new Intent(context, JobDetailsActivity.class);
intent.putExtra(JobDetailsActivity.EXTRA_NOTE, job.getNote());
intent.putExtra(JobDetailsActivity.EXTRA_PHONE, job.getPhone());
intent.putExtra(JobDetailsActivity.EXTRA_TIPS, job.getTips());
intent.putExtra(JobDetailsActivity.EXTRA_STATUS, job.getStatus());
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return Job.size();
}
static class ViewHolderJob extends RecyclerView.ViewHolder{
//Views
public TextView tvServiceType, tvStatus;
public final View mView;
//Initializing Views
public ViewHolderJob(View itemView) {
super(itemView);
mView = itemView;
tvServiceType = (TextView) mView.findViewById(R.id.tvServiceType);
tvStatus = (TextView) mView.findViewById(R.id.tvStatus);
}
}
}
ErrorLog
at com.roaderapp.roaderappdriver.job.JobAdapter.getItemCount(JobAdapter.java:128)
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2556)
at android.view.View.measure(View.java:16820)
at android.support.v4.widget.SwipeRefreshLayout.onMeasure(SwipeRefreshLayout.java:600)
Sen
Job
eklemeden önce recyclerview için adaptör ayarlıyorsunuz
bu satırı değiştirmek daha iyi olurdu: return Job.size(); eğer (İş == sıfır) 0 döndürürse; Job.size() döndürün; –