如果您想使用Java在Android上的RecylerView中显示这些URL,请执行以下步骤:
在build.grade
FILE模块文件中添加以下依赖项:
implementation("com.github.bumptech.glide:glide:4.16.0")
implementation("androidx.cardview:cardview:1.0.0")
创建一个包含RecyclerView
的.XML
文件:
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recycler_view"/>
for each 图像创建布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
app:cardCornerRadius="5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="200dp">
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:contentDescription="@null"/>
</FrameLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
创建一个适配器类:
public class UrlsAdapter extends RecyclerView.Adapter<UrlsAdapter.UrlViewHolder> {
private Context context;
private List<String> urls;
public UrlsAdapter(Context context, List<String> urls) {
this.context = context;
this.urls = urls;
}
@NonNull
@Override
public UrlViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.image_layout, parent, false);
return new UrlViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull UrlViewHolder urlViewHolder, int position) {
String url = urls.get(position);
urlViewHolder.bind(url);
}
@Override
public int getItemCount() {
return urls.size();
}
class UrlViewHolder extends RecyclerView.ViewHolder {
View itemView;
ImageView imageView;
UrlViewHolder(View itemView) {
super(itemView);
this.itemView = itemView;
imageView = itemView.findViewById(R.id.image_view);
}
void bind(String url) {
Glide.with(context).load(url).into(imageView);
}
}
}
在Activity中创建一个List类型的全局变量:
List<String> urls = new ArrayList<>();
在Activity中找到RecyclerView
并创建适配器:
RecyclerView recyclerView = findViewById(R.id.recycler_view);
UrlsAdapter urlsAdapter = new UrlsAdapter(this, urls);
recyclerView.setAdapter(urlsAdapter);
从实时数据库中获取urls
并通知适配器:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference imageUrlsRef = db.child("Listings").child(uid).child("imageUrls");
imageUrlsRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
String url = ds.getValue(String.class);
urls.add(url);
}
urlsAdapter.notifyDataSetChanged();
} else {
Log.d(TAG, task.getException().getMessage()); //Never ignore potential errors!
}
}
});
现在,您应该看到一个RecyclerView
,它在Glide
库的帮助下显示图像列表.