2017-02-15 5 views
-1

Ich versuche, Recyclerview mit Daten aus SQLite-Datenbank Inhalt laden. Aber es funktioniert nichtRecyclerView wird nicht mit Daten gefüllt

Dies ist, was ich

Aktivitätsklasse

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(); 
}} 

Adapter Klasse

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(); 
}} 

ich habe keine Kompilierungsfehlern getan haben, die Anwendung nicht werfen wird Ausnahmen. dbHelper.membership_for_recycler_view() gibt entsprechende Werte zurück. Ich bin ein bisschen neu in Android. Ich habe das mit Hilfe eines Tutorials gemacht. Was habe ich falsch gemacht?

Antwort

1

Ich denke, das Problem hier ist, rufen Sie prepare_membership() Funktion später und übergibt Daten an Ihren Adapter zuvor mit einer leeren Liste. Versuchen Sie folgende Änderungen vornehmen:

  1. eine neue Methode in Ihrem Adapter hinzufügen -

     public void refreshData(List<membership_recycler_model> membership_list){ 
          this.membership_list = membership_list; 
          notifyDataSetChanged(); 
         } 
    
  2. In Ihrem prepare_membership() Funktionsaufruf diese Methode nach der Liste von db dh das Abrufen m.refreshData(membershipList)

    `

+0

wird das ausprobieren. –

+0

Habe es funktioniert .. Vielen Dank –

Verwandte Themen