Java 回收器正在更新CardView,但不显示子项
我正在尝试使用RecyclerView在cardview中接收Firebase节点。该应用程序显示cardview项目,但不更新详细信息 这是我的火力基地 活动Java 回收器正在更新CardView,但不显示子项,java,android,firebase,android-studio,android-recyclerview,Java,Android,Firebase,Android Studio,Android Recyclerview,我正在尝试使用RecyclerView在cardview中接收Firebase节点。该应用程序显示cardview项目,但不更新详细信息 这是我的火力基地 活动 public class PizzaActivity extends AppCompatActivity { private static Context mContext; private RecyclerView recyclerView; private FirebaseDatabase fire
public class PizzaActivity extends AppCompatActivity {
private static Context mContext;
private RecyclerView recyclerView;
private FirebaseDatabase firebaseDatabase;
private DatabaseReference databaseReference;
private ArrayList allItems;
private PizzaAdapter pizzaAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pizza);
mContext=PizzaActivity.this;
allItems=new ArrayList<Pizza>();
firebaseDatabase=FirebaseDatabase.getInstance();
databaseReference=firebaseDatabase.getReference("pizza");
databaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
getAllItems(dataSnapshot);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
getAllItems(dataSnapshot);
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
getAllItems(dataSnapshot);
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
getAllItems(dataSnapshot);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
recyclerView= findViewById(R.id.recycler_view);
RecyclerView.LayoutManager recylerViewLayoutManager = new LinearLayoutManager(mContext);
recyclerView.setLayoutManager(recylerViewLayoutManager);
}
private void getAllItems(DataSnapshot dataSnapshot){
for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
// allItems.add(new Pizza());
Pizza pizza = dataSnapshot.getValue(Pizza.class);
pizzaAdapter = new PizzaAdapter(PizzaActivity.this, pizza);
recyclerView.setAdapter(pizzaAdapter);
}
}
}
有什么帮助吗?在过去的几天里,我一直在努力解决这个问题。日志中没有错误,应用程序也没有崩溃。CardView没有显示任何内容。您正在更新适配器
recyclerView.setAdapter(pizzaAdapter)代码>for循环中的每次。我认为那不是你想要的。另外,在获取数据后是否尝试过notifyDatasetChanged()
,以便UI更新?数据的获取调用发生在异步线程上。您可以在onBindViewHolder方法中设置click侦听器…如果我需要,可以设置哪些侦听器。
public class PizzaAdapter extends RecyclerView.Adapter<RecyclerViewHolder> {
private List<Pizza> pizzas;
private Context context;
public PizzaAdapter(Context context,List<Pizza>pizzas){
this.context=context;
this.pizzas=pizzas;
}
public PizzaAdapter(PizzaActivity context, Pizza pizza) {
}
@Override
public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.pizza_delivery_item, parent, false);
return new RecyclerViewHolder(layoutView, pizzas);
}
@Override
public void onBindViewHolder(@NonNull final RecyclerViewHolder holder, int position) {
holder.pizzaName.setText(pizzas.get(position).getType());
holder.pizzaDesc.setText(pizzas.get(position).getSize());
holder.location.setText(pizzas.get(position).getLocation());
holder.description.setText(pizzas.get(position).getDescription());
holder.delivered.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.delivered.setImageResource(R.drawable.deliveredicon);
}
});
holder.call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Toast.makeText(get," Can not complete call at the moment.", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
int arr=0;
try {
if (pizzas.size()==0){
arr=0;
}else {
arr=pizzas.size();
}
}catch (Exception e){
}
return arr;
}
}
class RecyclerViewHolder extends RecyclerView.ViewHolder {
public View mView;
public TextView pizzaName,pizzaDesc,location,description;
public ImageView delivered,call;
public RecyclerViewHolder(View layoutView, List<Pizza> pizzas) {
super(layoutView);
pizzaDesc= layoutView.findViewById(R.id.pizza_size);
pizzaName= layoutView.findViewById(R.id.pizza_name);
delivered=layoutView.findViewById(R.id.delivery_check);
location=layoutView.findViewById(R.id.location);
description=layoutView.findViewById(R.id.description);
call=layoutView.findViewById(R.id.call);
delivered.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
delivered.setImageResource(R.drawable.deliveredicon);
}
});
call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
public class Pizza {
public String location;
public String description;
public String type;
public String size;
public String phone;
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Pizza(String location, String description, String type, String size) {
this.location = location;
this.description = description;
this.type = type;
this.size = size;
}
public Pizza(){}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
}