2017-10-11 7 views
1

私はmiアプリケーションでデータを表示したいが、このエラーは表示されない:カスタムアダプターにはこのエラーがありますRecyclerViewアダプターは接続されていません。レイアウトをスキップする

RecyclerViewアダプターが接続されていない。レイアウトをスキップする

これは私の情報を表示している私のカスタムアダプター "CurpAdapter"に問題があると思われ、この理由でアプリケーションは何も表示せず、情報はfirebaseプロジェクトに保存されます私はコンソールに表示できません。

public class MainActivity extends AppCompatActivity { 

DatabaseReference database; 
private List<Curp> curps; 
private RecyclerView reciclador; 
RecyclerView.Adapter adap; 
private CurpAdapter cupadapter; 
List<Curp> lista=new ArrayList<>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    FirebaseApp.initializeApp(this); 

    database = FirebaseDatabase.getInstance().getReference(); 
    reciclador=(RecyclerView)findViewById(R.id.reciclador); 
    LinearLayoutManager lim=new LinearLayoutManager(this); 
    lim.setOrientation(LinearLayoutManager.VERTICAL); 
    reciclador.setLayoutManager(lim); 

    database.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      Curp value=new Curp(); 
      value=(Curp) dataSnapshot.getValue(Curp.class); 

      lista.add(value); 
      cupadapter=new CurpAdapter(lista); 
      adap = new CurpAdapter(lista); 
      reciclador.setAdapter(adap); 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) {} 
     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) {} 
     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) {} 
     @Override 
     public void onCancelled(DatabaseError databaseError) { } 
    }); 

} 
@Override 
protected void onStart(){ 
    super.onStart(); 
    DatabaseReference conditionRef= database.child("root"); 
} 

public void lanzar(View view){ 
    Intent generar = new Intent(this, Generar.class); 
    startActivity(generar); 
} 

}

、これはあなたがdatabase.addChildEventListener前に、アダプターを作成する必要が

public class CurpAdapter extends RecyclerView.Adapter<CurpAdapter.curpHolder> { 

private List<Curp> curps; 

public CurpAdapter(List<Curp> curps) { 
    this.curps = curps; 
} 

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

@Override 
public void onBindViewHolder(curpHolder holder, int position) { 
    Curp curpc=curps.get(position); 
    holder.curpCpompleto.setText(curpc.curpGen); 
    holder.iniciales.setText(curpc.curpGen.substring(0,3)); 
    holder.imagen.setImageLevel(0); 
} 

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

public class curpHolder extends RecyclerView.ViewHolder{ 

    ImageView imagen; 
    TextView iniciales, curpCpompleto; 

    public curpHolder(View itemView) { 
     super(itemView); 
     iniciales=(TextView)itemView.findViewById(R.id.iniciales); 
     curpCpompleto=(TextView)itemView.findViewById(R.id.curpCompleta); 
     imagen=(ImageView)itemView.findViewById(R.id.imagen); 
    } 
} 

}

答えて

0

私のカスタムadapaterのCurpAdapterクラスをSI。

adap = new CurpAdapter(lista); 
reciclador.setAdapter(adap); 

これはonCreateメソッドの開始時にデータの空のリストを含むアダプターを作成します。それは以下のこれらの2行はaddChildEventListenerから移動し、その前に呼ばれるべきであることを意味します。

次に、CurpAdapterにsetDataメソッドを追加する必要があります。あなたは

adap.setData(list); 
adap.notifyDataSetChange() 
を呼び出す必要があり lista.add(value);onChildAddedで今

public void setData(List<Curp> curps){ 
    this.curps = curps. 
} 

:それは次のようになります。

関連する問題