2017-09-01 8 views
0

それは私に空の活動を与え、それに私のリストを表示していません...私は何がエラーであるのか分かりません。recyclerViewにアダプターが接続されていません

public class Home extends AppCompatActivity implements HomeCallBack { 

    public ArrayList<info> info; 
    private Adaptor myadaptor; 
    private RecyclerView recyclerView; 
    private RecyclerView.LayoutManager layoutManager; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 
     recyclerView=(RecyclerView)findViewById(R.id.recycle_view); 

     BackgroundHome backgroundHome=new BackgroundHome(this,this); 
     backgroundHome.execute(); 


    } 

    @Override 
    public void processData(JSONArray data) 
    { 

     JSONObject js; 

       if(data!=null) 
       { 
        info=new ArrayList<>(); 

        try 
        { 
         for(int i=0;i<data.length();i++) 
         { 
          js =data.getJSONObject(i); 
          info in=new info(js.getString("Names"),js.getString("city"),js.getString("university")); 
          info.add(in); 




         } 



         myadaptor=new Adaptor(info); 

         recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL)); 
         LinearLayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
         recyclerView.setLayoutManager(mLayoutManager); 
         recyclerView.setItemAnimator(new DefaultItemAnimator()); 
         recyclerView.setAdapter(myadaptor); 

それは私に私がrecyclerView.setAdapter(myadapterが)中にメソッドを作成して呼び出し、エラーやアプリの停止を与える: はここに私のコードです。ここ は私のアダプターのコードです:

public class Adaptor extends RecyclerView.Adapter<Adaptor.ViewHolder> { 


private ArrayList<info> info; 

public Adaptor(ArrayList<info> info) { 
    this.info = info; 
} 


public void updateList(ArrayList<info> data) { 
    info = data; 
    notifyDataSetChanged(); 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 


    View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.list_view, parent, false); 

     return new ViewHolder(itemView); 


} 



@Override 
public void onBindViewHolder(ViewHolder holder, int position) 
{ 

    info i= info.get(position); 
    holder.name.setText(i.getName()); 
    holder.city.setText(i.getCity()); 
    holder.city.setText(i.getUniversity()); 


} 

@Override 
public int getItemCount() { 
    return info.size(); 
} 


public class ViewHolder extends RecyclerView.ViewHolder { 

    TextView name, city, uni; 


    public ViewHolder(final View v) { 
     super(v); 
     name = (TextView) v.findViewById(R.id.name); 
     city = (TextView) v.findViewById(R.id.city); 
     uni = (TextView) v.findViewById(R.id.university); 

    } 


    } 

    } 

これは、私は、問題はあなたが外のアダプタを設定しようということだと思う私のアダプタクラスであり、上記の私のリストに

+0

あなたの ''アダプタ ''コードを貼り付け – jlively

+0

あなたにはどのようなエラーがありますか? – Piyush

+0

アダプタは接続されず、レイアウトはスキップされます@Piyush –

答えて

0

を表示しようとしています私のホーム活動でありますメインスレッド。

@Override 
    public void processData(JSONArray data) 
    { 

     JSONObject js; 

       if(data!=null) 
       { 
        info=new ArrayList<>(); 

        try 
        { 
         for(int i=0;i<data.length();i++) 
         { 
          js =data.getJSONObject(i); 
          info in=new info(js.getString("Names"),js.getString("city"),js.getString("university")); 
          info.add(in); 




         } 


    runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
      myadaptor=new Adaptor(info); 

          recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL)); 
          LinearLayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
          recyclerView.setLayoutManager(mLayoutManager); 
          recyclerView.setItemAnimator(new DefaultItemAnimator()); 
          recyclerView.setAdapter(myadaptor); 
      } 
     }); 
+0

このメソッドをどこに追加すればいいですか? –

+0

私は与えた関数で 'myadaptor ...'という行をラップするだけです – Vyacheslav

+0

どのメソッドがrunOnUithreadですか? –

0

onCreateでアダプタ、recyclerview、layoutmanagerを初期化してみてください。そしてprocessDataの呼び出しが終了したら、リストを取得してmAdapter.notifyDataSetChangedを呼び出します。

public class Home extends AppCompatActivity implements HomeCallBack { 

public ArrayList<info> info; 
private Adaptor myadaptor; 
private RecyclerView recyclerView; 
private RecyclerView.LayoutManager layoutManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    recyclerView=(RecyclerView)findViewById(R.id.recycle_view); 
    info = new ArrayList<>(); 
    myadaptor=new Adaptor(info); 
    recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL)); 
    LinearLayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
    recyclerView.setLayoutManager(mLayoutManager); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    recyclerView.setAdapter(myadaptor); 

    BackgroundHome backgroundHome=new BackgroundHome(this,this); 
    backgroundHome.execute(); 
} 

@Override 
public void processData(JSONArray data) { 
    JSONObject js; 
      if(data!=null) { 
       try { 
        for(int i=0; i<data.length(); i++) 
        { 
         js = data.getJSONObject(i); 
         info in = new info(js.getString("Names"),js.getString("city"),js.getString("university")); 
         info.add(in); 
        } 

        myadaptor.notifyDataSetChanged(); 
+0

オープニング時にエラーが解決されません。 –

+0

エラーです。アダプタクラスのonCreateViewHolderメソッドでエラーが発生すると思います。あなたはそれを持っているかどうかを確認する –

+0

質問に間違いを記入してください。 – jlively

関連する問題