2017-09-01 75 views
0

它给了我一个空白的活动,并没有显示我的清单..我不知道什么是错误。任何人都可以提供帮助吗? 这里是我的代码:没有适配器连接在回收站查看

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

相关问题