gpt4 book ai didi

java - 自定义适配器出现此错误 RecyclerView 未连接适配器;跳过布局

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:58 25 4
gpt4 key购买 nike

我想在小米应用程序中显示数据,但无法显示此错误:

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

}

这是我的自定义适配器 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.
}

现在,在 lista.add(value); 之后的 onChildAdded 中,您必须调用

adap.setData(list);
adap.notifyDataSetChange()

关于java - 自定义适配器出现此错误 RecyclerView 未连接适配器;跳过布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46694951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com