2017-02-15 3 views
-1

Я пытаюсь загрузить recyclerview с данными из содержимого базы данных SQLite. Но это не работаетRecyclerView не заполняется данными

Это то, что я сделал

класс активности

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

Получил это работу .. Спасибо большое –

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