【发布时间】:2016-11-22 08:22:28
【问题描述】:
如何将图像和视频加载到 RecyclerView 的同一列表中,以便当我点击它可以播放的视频(如 Facebook 博客样式)时,可以看到 Facebook 上的图像以及 @ 上的视频987654323@的一个列表,有没有这方面的教程请帮帮我。我真的被困住了,我对此没有任何解决方案。
如何用图片和视频制作一个RecyclerView?
下面是我的onStart 方法它在哪里有FirebaseRecyclerAdapter 它启动列表
@Override
protected void onStart() {
super.onStart();
//checkUserExists();
// mAuth.addAuthStateListener(mAuthLitsener);
try {
FirebaseRecyclerAdapter<Posts, BlogViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Posts, BlogViewHolder>(Posts.class,
R.layout.item_activity,
BlogViewHolder.class,
mDatabase) {
@Override
protected void populateViewHolder(BlogViewHolder viewHolder, final Posts model, final int position) {
final String key_post = getRef(position).getKey();
viewHolder.setTitle(model.getEventTitle());
viewHolder.setDesc(model.getEventDescription());
viewHolder.setImage(c, model.getEventImage());
viewHolder.setVideo(c,model.getEventImage());
viewHolder.imagePost.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),""+key_post,Toast.LENGTH_LONG).show();
Intent singleView = new Intent(MainActivity.this,ViewSingleImage.class);
singleView.putExtra("Blog",key_post);
singleView.putExtra("EventName",eventname);
startActivity(singleView);
}
});
}
};
mRecyclerview.setAdapter(firebaseRecyclerAdapter);
}
catch (Exception ex){
System.out.println("Error "+ ex);
}
}
这是MyViewHolder 类,我在其中声明了图像和网址
public static class BlogViewHolder extends RecyclerView.ViewHolder{
View mView;
private ImageView imagePost;
public BlogViewHolder(View itemView) {
super(itemView);
mView=itemView;
imagePost =(ImageView)mView.findViewById(R.id.post_image);
}
public void setTitle(String title){
TextView post_title = (TextView)mView.findViewById(R.id.post_title);
post_title.setText(title);
}
public void setDesc(String desc){
TextView post_desc = (TextView)mView.findViewById(R.id.post_desc);
post_desc.setText(desc);
}
public void setImage(final Context c,final String imageUrl){
//
Picasso.with(c).load(imageUrl).error(R.mipmap.add_btn).fit().centerInside().placeholder(R.mipmap.add_btn)
.networkPolicy(NetworkPolicy.OFFLINE).into(imagePost, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
//Reloading an image again ...
Picasso.with(c).load(imageUrl).error(R.mipmap.add_btn).placeholder(R.mipmap.add_btn)
.into(imagePost);
}
});
}
public void setVideo(final Context c, final String videoUrl){
videoLayout = (FullscreenVideoLayout) mView.findViewById(R.id.post_video);
// videoLayout.setActivity(this);
// videoLayout.setActivity(get);
Uri videoUri = Uri.parse(videoUrl);
try {
videoLayout.setVideoURI(videoUri);
} catch (IOException e) {
e.printStackTrace();
}
}
}
所以一般来说,在ViewHolder中我声明了图像和视频,所以在OnStart方法中我放置了我的适配器以便下载ImageUrl和VideoUrl,但是逻辑在我这边检查它们仍然很棘手
【问题讨论】:
-
请查看以下链接并在 Viewholder 中使用图像和文本视图,并在 onBindViewHolder() 方法创建视图之前检查条件。 stackoverflow.com/questions/30978030/…
-
@Chayan,感谢您的回复,但是当我看到您发送的帖子链接时,它只是关于视频,我想要的是当该人发布它加载到列表中的图像时以及何时该人也在 RecyclerView 中发布了它加载的视频,我希望它在加载图像和视频时具有自动感知(就像 facebook 一样)。
-
@huzaifah--- 你是从服务器获取图像 URL 和视频 URL 吗??如果你正在从服务器获取对象类型,无论是图像还是视频,然后在 OncreateViewHolder( ) 方法并在 obBindView() 方法中绑定数据。你想给我发一些 Pescudo 代码吗
-
拜托,请@Chayan,帮我解决这个问题,给我一些代码示例
-
@Chayan,请稍候....帮帮我:)
标签: java android video firebase android-imageview