2017-09-18 26 views
0

Ich versuche, eine Liste von Elementen mit einer Recycler-Ansicht auf einfache Weise zu machen, indem eine Methode namens Data(), die eine For-Schleife hat, um die Textansicht kontinuierlich einstellen, aber wenn ich die App es zeige mir ein weißer Bildschirm ohne etwas.Daten nicht in RecyclerView angezeigt

public class MainActivity extends AppCompatActivity { 

    RecyclerView mRecyclerView; 
    RecyclerAdapter mAdapter ; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mRecyclerView =(RecyclerView) findViewById(R.id.recycler_view); 
     LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); 
     mRecyclerView.setLayoutManager(linearLayoutManager); 
     mRecyclerView.setAdapter(mAdapter); 
     } 

    private class RecyclerAdapter extends RecyclerView.Adapter<MyViewHolder{ 

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

     @Override 
     public void onBindViewHolder(MyViewHolder holder, int position) {  
      holder.Data(); 
     } 

     @Override 
     public int getItemCount() { 
      return 100; 
     } 
    } 

    private class MyViewHolder extends RecyclerView.ViewHolder{ 
     public TextView mmTextView ; 
     private Button mButton; 
     public MyViewHolder(View itemView) { 
      super(itemView); 
      mmTextView = (TextView) findViewById(R.id.list_text_view); 
      mButton = (Button) findViewById(R.id.list_button); 
     } 

     private void Data(){ 
      for (int i =0 ;i<=100;i++){ 
       mmTextView.setText(String.valueOf("Text : " + i)); 
      }  
     } 
    } 

} 
+0

Sie sind zur Zugabe von 100 Textzeichenfolgen zu jeder Inhaber (die jeweils nur einen Satz Ihrer 'TextView' halten soll und' Button' – kalabalik

+0

Ja, was KalaBalik sagt, ist wahr.Sie versuchen, jede Ansicht von Holder 101 Mal für insgesamt 100 Ansichten einzustellen, aber Sie sind nicht befugt, Textviews mit Holder und es funktioniert nicht. – Thracian

+0

Sie möchten überprüfen, wie a Recyclerview-Adapter funktioniert, Alter https://developer.android.com/training/material/lists-cards.html – gyosida

Antwort

0

Sie sollten mmTextView von itemView nicht aus Activity infilate. Es sollte mmTextView = (TextView) itemView.findViewById(R.id.list_text_view); sein, auch weil es eine Ansicht des Inhabers ist, die Sie in onBindViewHolder() Methode unter Verwendung holder.mmTextView.setText() erhalten können. Inflatieren Sie die Schaltfläche onCreate() der Aktivität, es ist auch praktisch, Daten an einen Adapter innerhalb des Konstruktors zu übergeben und Daten an den Adapter auf onBindViewHolder() zu binden, da er weiß, welche Ansichten er besitzt.

0

In onBindViewHolder Verfahren binden die Daten in die Textview:

mmTextView.mmTextView.setText("SOME STRING VALUE"); 
+0

Sie nicht Ansichten aufBindViewHolder() zu inflationieren, binden Sie Daten zu Ansichten von Inhaber Sie infilate innerhalb des Konstruktors des öffentlichen MyViewHolders (View itemView) {mmTextView = (TextView) itemView.findViewById (R.id.list_text_view);} dann können Sie es als holder.mmTextView innerhalb onBindViewHolder() Methode verwenden. – Thracian

+0

Sie haben Recht. Ich habe meine Antwort aktualisiert. –

Verwandte Themen