我正在尝试制作一个应用程序。我在名为 CardTestActivity 的 Activity 中使用 Horizontal RecyclerView。我正在 Firebase 数据库中保存两种类型的数据,第一种是名称,第二种是 imageUri。这是我的 Firebase 数据库的屏幕截图:-
我遇到了一个问题,比如我在 RecyclerView 中获取名称,但没有获取 imageUri ,而是获取了 null。我有一个 ViewHolder 和一个适配器类,我在 RecyclerView 中使用它。 我尝试更改 DataClass 但遇到同样的问题。我在下面提供了我的代码:-
这是我的代码:-
卡测试适配器:-
public class CardTestAdapter extends RecyclerView.Adapter<CardTestAdapter.CardTestViewHolder> {
private Context mContext;
private List<CardTestData> mData;
public CardTestAdapter(Context context , List<CardTestData> data) {
mContext = context;
mData = data;
}
@NonNull
@Override
public CardTestViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.card_test_recycler_view , parent ,false);
return new CardTestViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull CardTestViewHolder holder, int position) {
CardTestData testData = mData.get(position);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext, "" + testData.getImageUri(), Toast.LENGTH_SHORT).show();
}
});
Glide.with(mContext)
.asBitmap()
.load(testData.getImageUri())
.into(holder.imageView);
holder.name.setText(testData.getName());
}
@Override
public int getItemCount() {
return mData.size();
}
public class CardTestViewHolder extends RecyclerView.ViewHolder {
TextView name;
ImageView imageView;
public CardTestViewHolder(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.card_test_name);
imageView = itemView.findViewById(R.id.card_test_image);
}
}
}
卡片测试数据:-
public class CardTestData {
private String name;
private String imageUri;
public CardTestData(){
}
public CardTestData(String name , String imageUri) {
this.name = name;
this.imageUri = imageUri;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImageUri() {
return imageUri;
}
public void setImageUri(String iamgeUri) {
this.imageUri = getImageUri();
}
}
我的卡测试 Activity :-
public class CardTestActivity extends AppCompatActivity {
CardView cv;
private RecyclerView mRecyclerView;
private List<CardTestData> mData;
private ValueEventListener mListener;
private DatabaseReference mDataRef;
private CardTestAdapter mAdatper;
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_card_test);
cv = findViewById(R.id.new_cardView);
cv.setCardBackgroundColor(Color.RED);
mDataRef = FirebaseDatabase.getInstance().getReference("newReleasesData");
mRecyclerView = this.findViewById(R.id.card_test_recyclerview);
mRecyclerView.setHasFixedSize(true);
LinearLayoutManager manager = new LinearLayoutManager(this , LinearLayoutManager.HORIZONTAL ,false);
mRecyclerView.setLayoutManager(manager);
mData = new ArrayList<>();
mAdatper = new CardTestAdapter(this , mData);
mRecyclerView.setAdapter(mAdatper);
mListener = mDataRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()){
CardTestData data = postSnapshot.getValue(CardTestData.class);
mData.add(data);
}
mAdatper.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
请帮我检索图像,如果您有任何解决方案,请回答我。
最佳答案
您没有在模型中设置从 firebase 获取的图像,而是始终设置默认 null
。检查以下解决方案:
而不是
public void setImageUri(String iamgeUri) {
this.imageUri = getImageUri();
}
使用
public void setImageUri(String iamgeUri) {
this.imageUri = iamgeUri;
}
关于java - 在 RecyclerView 中从 Firebase 加载图像时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591604/