2016-08-24 2 views
1

Данные не отображаются на экране Android, и я также не получаю ошибок в LogCat. В LogCat он отображает данные, но не отображает их на экране. Я много искал, но для этого не получил никакого ответа. Я использую RecyclerView, чтобы показать данные.Данные не отображаются с помощью recyclerView

Вот мой код - MainActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second_activity); 
    recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
    gAdapter = new GetJobDetailsAdapter(detailsJob); 
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
    recyclerView .setLayoutManager(mLayoutManager); 
    recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL)); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    String url = "url" 

    AQuery mAQuery = new AQuery(SecondActivity.this); 
    mAQuery.ajax(url, String.class, new AjaxCallback<String>() { 
     @Override 
     public void callback(String url, String data, AjaxStatus status) { 
      super.callback(url, data, status); 
      if (null != data && status.getCode() != -101) { 

       String StringData = "" + data; 
       try { 
        JSONArray rootArray = new JSONArray(StringData); 
        int len = rootArray.length(); 
        for (int i = 0; i < len; ++i) { 
         JSONObject json = rootArray.optJSONObject(i); 

         GetJobDetailsJobs b1 = new GetJobDetailsJobs(); 
         b1.About_Company = json.optString("Req_Additional_Details"); 
         b1.Designation = json.optString("Req_Designation_Role"); 
         b1.Eligibility = json.optString("JobTitle"); 
         b1.JobLocation = json.optString("Job_Location"); 
         b1.JobDescription=json.optString("Req_Project_Desc"); 


         detailsJob.add(b1); 


        } 
       } catch (JSONException e) { 
        Toast.makeText(SecondActivity.this, e.toString(), Toast.LENGTH_LONG).show(); 

       } 
      } 
     } 
    }); 
} 

А ниже мой код адаптера:

public class GetJobDetailsAdapter extends RecyclerView.Adapter<GetJobDetailsAdapter.MyViewHolder> { 
    public List<GetJobDetailsJobs> detailsJob; 
    public class MyViewHolder extends RecyclerView.ViewHolder{ 

     public TextView About_Company,Designation,Eligibility,JobLocation,JobDescription,KeySkills,EventDate,EventLocation,Salary,Comp_Name; 
     public MyViewHolder(View view){ 
      super(view); 
      About_Company=(TextView) view.findViewById(R.id.About_Company); 
      Designation=(TextView) view.findViewById(R.id.Designation); 
      Eligibility=(TextView) view.findViewById(R.id.Eligibility); 
      JobLocation=(TextView) view.findViewById(R.id.JobLocation); 
      JobDescription=(TextView) view.findViewById(R.id.JobDescription); 
      KeySkills=(TextView) view.findViewById(R.id.KeySkills); 
      EventDate=(TextView) view.findViewById(R.id.EventDate); 
      EventLocation=(TextView) view.findViewById(R.id.EventLocation); 
      Salary=(TextView) view.findViewById(R.id.Salary); 
      Comp_Name=(TextView) view.findViewById(R.id.Comp_Name); 
     } 
    } 
    public GetJobDetailsAdapter(List<GetJobDetailsJobs>detailsJob){ 
     this.detailsJob=detailsJob; 
    } 
    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.jobdetails, parent, false); 

     return new MyViewHolder(itemView); 
    } 
    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     GetJobDetailsJobs b1 = detailsJob.get(position); 
     holder.About_Company.setText(b1.getAbout_Company()); 
     holder.Designation.setText(b1.getDesignation()); 
     holder.Eligibility.setText(b1.getEligibility()); 

    } 

    @Override 
    public int getItemCount() { 
     return detailsJob.size(); 
    } 
} 
+0

добавьте полный код адаптера – HourGlass

+0

ли вы под названием 'notifyDataSetChanged()' после добавления элементов в список? – Emil

+2

добавьте 'recyclerview.setadapter (gAdapter)' после 'detailsJob.add (b1);' в 'callback' метод –

ответ

0

Вы не устанавливать адаптер recyclerview в вашем коде. «recyclerView.setAdapter (gAdapter)» установите его либо в onCreate, либо в обратном вызове Ajax.

recyclerView.setAdapter(gAdapter) 

После получения заданияДетали из обратного вызова Ajax вы должны установить его для адаптера.

gAdapter.setJobDetailsAdapterData(your_jobs_data); 

Затем он установит данные и вызовет notifyDataSetChanged.

Адаптер: Это должен быть наборJobDetailsAdapter.

public void setJobDetailsAdapterData(List<GetJobDetailsJobs>detailsJob){ 
     this.detailsJob=detailsJob; 
     notifyDataSetChanged(); 
    } 
+0

уже установлен, но затем он также не отображает – tiya

+0

, вызывающий' notifyDataSetChanged(); 'в конструкторе адаптера doesn Вы ничего хорошего не делаете. вы должны вызвать его после добавления элементов в список. – Emil

+0

@Boss да, это должен быть метод, когда мне нужно установитьData, а затем вызвать notifyDataSetChanged. – HourGlass

0

Вы забыли две вещи 1. Установите адаптер 2. и называем notifyDataSetChanged, после добавления нового элемента

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second_activity); 
     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
     gAdapter = new GetJobDetailsAdapter(detailsJob); 
     RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
     recyclerView .setLayoutManager(mLayoutManager); 
     recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL)); 
     recyclerView.setItemAnimator(new DefaultItemAnimator()); 
     recyclerView.setAdapter(gAdapter) ; //You must set your adapter 
     String url = "url" 

     AQuery mAQuery = new AQuery(SecondActivity.this); 
     mAQuery.ajax(url, String.class, new AjaxCallback<String>() { 
      @Override 
      public void callback(String url, String data, AjaxStatus status) { 
       super.callback(url, data, status); 
       if (null != data && status.getCode() != -101) { 

        String StringData = "" + data; 
        try { 
         JSONArray rootArray = new JSONArray(StringData); 
         int len = rootArray.length(); 
         for (int i = 0; i < len; ++i) { 
          JSONObject json = rootArray.optJSONObject(i); 

          GetJobDetailsJobs b1 = new GetJobDetailsJobs(); 
          b1.About_Company = json.optString("Req_Additional_Details"); 
          b1.Designation = json.optString("Req_Designation_Role"); 
          b1.Eligibility = json.optString("JobTitle"); 
          b1.JobLocation = json.optString("Job_Location"); 
          b1.JobDescription=json.optString("Req_Project_Desc"); 


          detailsJob.add(b1); 

          gAdapter.notifyDataSetChanged(); //call notifyDataSetChanged , every time you add an item 
         } 
        } catch (JSONException e) { 
         Toast.makeText(SecondActivity.this, e.toString(), Toast.LENGTH_LONG).show(); 

        } 
       } 
      } 
     }); 
    } 
} 
+0

'RecyclerView' не содержит метода' notifyDataSetChanged() '. вы должны вызвать 'adapter.notifyDataSetChanged()' – Emil

+0

да получил его ... добавлен recyclerview.setadapter (gAdapter) после detailsJob.add (b1); – tiya

+0

@ Босс, извини, что я плохой, я должен был это сделать. Я редактирую свой ответ. Спасибо, что указали это. –

Смежные вопросы