问题描述
我有一个选项卡式活动,每个选项卡都包含一个带有recyclerView的片段。 recyclerView中的一个项目由带有文本的图像组成,两者均从Firebase实时数据库中获取。
一切似乎都正常,没有错误,但是当我运行该应用程序时,会提取并显示名称,而不显示图像。
有帮助吗? 预先谢谢你!
这是片段
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.linearlayoutmanager;
import androidx.recyclerview.widget.RecyclerView;
import com.andrei.bucatariadebuzunar.Clases.ImageUploadInfo;
import com.andrei.bucatariadebuzunar.Clases.ImageUploadInfoViewHolder;
import com.andrei.bucatariadebuzunar.R;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.squareup.picasso.Picasso;
public class FripturiFragment extends Fragment {
public RecyclerView recyclerView;
private DatabaseReference databaseReference;
FirebaseRecyclerOptions<ImageUploadInfo> options;
FirebaseRecyclerAdapter<ImageUploadInfo,ImageUploadInfoViewHolder>adapter;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_layout,container,false);
databaseReference = FirebaseDatabase.getInstance().getReference().child("Recipes_Images").child("Fripturi");
databaseReference.keepSynced(true);
recyclerView = rootView.findViewById(R.id.recyclerViewRecipes);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new linearlayoutmanager(getContext()));
LoadData();
return rootView;
}
private void LoadData() {
options = new FirebaseRecyclerOptions.Builder<ImageUploadInfo>().setQuery(databaseReference,ImageUploadInfo.class).build();
adapter = new FirebaseRecyclerAdapter<ImageUploadInfo,ImageUploadInfoViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull ImageUploadInfoViewHolder imageUploadInfoViewHolder,int position,@NonNull ImageUploadInfo model) {
imageUploadInfoViewHolder.textView.setText(model.getimageName());
Picasso.get().load(model.getimageURL()).placeholder(R.drawable.hat).into(imageUploadInfoViewHolder.imageView);
}
@NonNull
@Override
public ImageUploadInfoViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recipe_card_view,parent,false);
return new ImageUploadInfoViewHolder(view);
}
};
adapter.startListening();
recyclerView.setAdapter(adapter);
}
}```
解决方法
毕加索无法识别此网址格式,因此它将无法显示图片。
StorageReference ref = storage.getReferenceFromUrl(url);
storageRef.child("Recipes_Images").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
//set your image
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});