Вот мой класс адаптера. Я не могу отобразить его в массиве, если его изображение или видео, если его видео, мне также нравится, что он автоматически воспроизводится при прокрутке к видео.как Facebook или Instagram изображение или видео.
Я могу передать его как массив, но когда я связываю его, я могу только связать видео или изображение, и если его видео не воспроизводится автоматически, он даже не отображает
public class Adapter extends
RecyclerView.Adapter<RecyclerView.ViewHolder{
private Context context;
private LayoutInflater inflater;
List<Datainfo> data_info = Collections.emptyList();
public Datainfo info;
int currentPos = 0;
private Uri uri;
// create constructor to initilize context and data sent from
MainActivity
public Adapter(Context context, List<Datainfo> data_info){
this.context = context;
inflater= LayoutInflater.from(context);
this.data_info = data_info;
}
// Inflate the layout when viewholder created
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup
parent, int viewType) {
View view=inflater.inflate(R.layout.activity, parent,false);
MyHolder holder = new MyHolder(view);
return holder;
}
// Bind data
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int
position) {
// Get current position of item in recyclerview to bind data
and assign values from list
MyHolder myHolder = (MyHolder) holder;
Datainfo info = data_info.get(position);
if(null != info.image) {
myHolder.image.setImageBitmap(current.image);
myHolder.image.setVisibility(View.VISIBLE);
}else{
myHolder.vid.setOnCompletionListener(new
MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
String uriPath = "https://....."; // your URL here
uri = Uri.parse(uriPath);
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(String.valueOf(uri));
mediaPlayer.prepareAsync(); // might take
long! (for buffering, etc)
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
// return total item from List
@Override
public int getItemCount() {
return data_info.size();
}
class MyHolder extends RecyclerView.ViewHolder{
private ImageView image;
private VideoView vid;
// create constructor to get widget reference
public MyHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.image);
vid = (VideoView) itemView.findViewById(R.id.vid);
}
}
}
вот мой макет активности
<LinearLayout
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="match_parent"
android:background="#fff"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/feed_item_padding_top_bottom"
android:paddingTop="@dimen/feed_item_padding_top_bottom">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="fill_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:adjustViewBounds="true"
android:cropToPadding="true"
android:scaleType="fitXY"
android:visibility="gone">
</ImageView>
<VideoView
android:id="@+id/vid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="2"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>