我想在mi app中显示数据,但是无法显示此错误:
RecyclerView没有连接适配器;跳过布局
这是我的MainActivity,在那里我发布了我的信息,我认为我的自定义适配器" 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);
}
}
这就是我的Custom adapater CurpAdapter类
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 :(得分:0)
您必须在database.addChildEventListener
之前创建适配器。这意味着下面这两行应该从addChildEventListener
移出并在它之前调用:
adap = new CurpAdapter(lista);
reciclador.setAdapter(adap);
这将在onCreate
方法的开头创建包含空数据列表的适配器。
接下来,您必须在CurpAdapter中添加方法setData。它看起来像这样:
public void setData(List<Curp> curps){
this.curps = curps.
}
现在onChildAdded
lista.add(value);
之后你需要致电
adap.setData(list);
adap.notifyDataSetChange()