自定义适配器有此错误RecyclerView没有附加适配器;跳过布局
问题描述:
我想在mi应用程序中显示数据,但无法显示此错误:自定义适配器有此错误RecyclerView没有附加适配器;跳过布局
RecyclerView没有附加适配器;跳过布局
这是我的MainActivity,在那里我dislay我的信息,我认为是我的自定义适配器“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);
}
}
,这对我的自定义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);
}
}
}
答
你必须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()