2017-02-15 114 views
-1

我想从SQLite数据库内容加载recyclerview数据。但它不工作RecyclerView没有填充数据

这是我做了

Activity类

public class ViewMembership extends AppCompatActivity { 
private RecyclerView recyclerView; 
private membership_view_recycler_adapter m; 

private DBHelper dbHelper; 


public List<membership_recycler_model> membershipList=new ArrayList<>(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_view_membership); 
    dbHelper=new DBHelper(this); 

    //////////////////////////////////////////////////////////////////////////// 

    recyclerView=(RecyclerView) findViewById(R.id.View_Membership_Recycler); 
    m=new membership_view_recycler_adapter(membershipList); 
    RecyclerView.LayoutManager layoutManager=new LinearLayoutManager(getApplicationContext()); 
    recyclerView.setLayoutManager(layoutManager); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 

    recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL)); 

    recyclerView.setAdapter(m); 

    prepare_membership(); 

    ////////////////////////////////////////////////////////////////////////// 

} 
public void prepare_membership() 
{ 
    System.out.println("#######################Prepare_membership called"); 
    membershipList=dbHelper.membership_for_recycler_view(); 
    m.notifyDataSetChanged(); 
}} 

适配器类

public class membership_view_recycler_adapter extends RecyclerView.Adapter<membership_view_recycler_adapter.MyViewHolder> { 

public class MyViewHolder extends RecyclerView.ViewHolder { 
    public TextView name,region; 
    public MyViewHolder(View itemView) { 
     super(itemView); 
     name=(TextView) itemView.findViewById(R.id.membership_name_textview); 
     region=(TextView) itemView.findViewById(R.id.membership_region_textview); 
    } 
} 


public membership_view_recycler_adapter(List<membership_recycler_model> membership_list) { 
    this.membership_list = membership_list; 
} 

private List<membership_recycler_model> membership_list; 



@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.membership_view_row,parent,false); 
    return new MyViewHolder(view); 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    membership_recycler_model membership=membership_list.get(position); 
    holder.name.setText(membership.getMembership_name()); 
    holder.region.setText(membership.getRegion()); 
} 

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

我没有编译错误,应用程序没有抛出任何例外。 dbHelper.membership_for_recycler_view()返回适当的值。我在Android中有点新鲜。我在教程的帮助下做到了这一点。我做错了什么?

回答

1

我认为这里的问题在于你在稍后调用prepare_membership() 函数并将数据传递给你的适配器,并且有一个空的列表。尽量使以下更改:

  1. 在适配器中添加了一种新方法 -

     public void refreshData(List<membership_recycler_model> membership_list){ 
          this.membership_list = membership_list; 
          notifyDataSetChanged(); 
         } 
    
  2. 里面你prepare_membership()函数调用此方法从数据库即获取列表后m.refreshData(membershipList)

    `

+0

会试一试。 –

+0

得到它的工作..非常感谢 –