2016-04-07 11 views
0

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
+0

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; –

cevap

0

: Ayrıca vermek pratik olmadığına dikkat

adapter.setJob(listJob); 
recyclerView.setAdapter(adapter); 


if (savedInstanceState != null) { 
    Logging.m("TabActive: Job is empty"); 
} else { 
     parseResponse(); 
} 
//update adapter to containing the retrieved job 

: Etrafta onu geçiş düşünüyorum

recyclerView.setAdapter(adapter); 


if (savedInstanceState != null) { 
    Logging.m("TabActive: Job is empty"); 
} else { 
     parseResponse(); 
} 
//update adapter to containing the retrieved job 
adapter.setJob(listJob); 

sorununuzu çözer değişkeni (bu durumda Job) sınıf tanımınızla aynı kasayı. Hatalara kolayca yol açabilir. Listenizi List<Job> job;

+0

Zaten hala başarısız yolunuzu uygulamak android.support.v7.widget.RecyclerView.onMeasure de com.roaderapp.roaderappdriver.job.JobAdapter.getItemCount (JobAdapter.java:131) de java.lang.NullPointerException (RecyclerView.java:2556) at android.view.View.measure (View.java:16820) – Nizzam

+0

Burada "listJob" öğesini başlatıyor musunuz? – 0xDEADC0DE

+0

Hala "listJob" öğesini başlatmıyorsunuz. ListJob = yeni ArrayList (); 'bir yerde olmalı – 0xDEADC0DE

İlgili konular