我被困了两天。我无法实现如何编写该逻辑。
if(newState == RecyclerView.SCROLL_STATE_IDLE){ linearLayoutManager =(LinearLayoutManager)recyclerView.getLayoutManager(); final int firstVisiblePosition = linearLayoutManager.findFirstVisibleItemPosition(); final int lastVisiblePosition = linearLayoutManager.findLastVisibleItemPosition(); Log.i(“ TAG”,“ FIRSTVISIBLEPOSITION” + firstVisiblePosition); Log.i(“ TAG”,“ LASTVISIBLEPOSITION” + lastVisiblePosition);
if (oldFocuslayout != null && imageViewPlaceHolder != null) {
pos = (int) oldFocuslayout.getTag();
viewtype = (int) imageViewPlaceHolder.getTag();
if (viewtype == mainFeedAdapter.SHARE_VIDEO_LAYOUT) {
textureView = (TextureView) oldFocuslayout.findViewById(R.id.tex_video_preview);
imageViewPlaceHolder = (ImageView) oldFocuslayout.findViewById(R.id.img_video_single_image);
} else if (viewtype == mainFeedAdapter.VIDEO_LAYOUT) {
textureView = (TextureView) oldFocuslayout.findViewById(R.id.tex_video_preview);
imageViewPlaceHolder = (ImageView) oldFocuslayout.findViewById(R.id.img_video_single_image);
}
imageViewPlaceHolder.setImageResource(0);
Picasso.get().load(mainFeedAdapter.media_base_url + mainFeedAdapter.feed_list.get(pos).getVideo().get(0).getMedia_url()).fit().centerCrop().into(imageViewPlaceHolder);
}
newFocusLayout = linearLayoutManager.findViewByPosition(firstVisiblePosition);
oldFocuslayout = newFocusLayout;
int viewtype = recyclerView.findViewHolderForAdapterPosition(firstVisiblePosition).getItemViewType();
if (viewtype == mainFeedAdapter.SHARE_VIDEO_LAYOUT) {
textureView = (TextureView) newFocusLayout.findViewById(R.id.tex_video_preview);
imageViewPlaceHolder = (ImageView) newFocusLayout.findViewById(R.id.img_video_single_image);
imageViewPlaceHolder.setTag(viewtype);
} else if (viewtype == mainFeedAdapter.VIDEO_LAYOUT) {
textureView = (TextureView) newFocusLayout.findViewById(R.id.tex_video_preview);
imageViewPlaceHolder = (ImageView) newFocusLayout.findViewById(R.id.img_video_single_image);
imageViewPlaceHolder.setTag(viewtype);
}
oldFocuslayout.setTag(firstVisiblePosition);
textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
surfacePlace = new Surface(surface);
mediaPlayer = new MediaPlayer();
textureView.setTag(mediaPlayer);
mediaPlayer.setSurface(surfacePlace);
try {
mediaPlayer.setDataSource(url);
mediaPlayer.setLooping(true);
mediaPlayer.setVolume(0, 0);
mediaPlayer.prepare();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.start();
textureView.setVisibility(View.VISIBLE);
imageViewPlaceHolder.setVisibility(View.GONE);
}
});
} catch (IllegalArgumentException e1) {
e1.printStackTrace();
} catch (SecurityException e1) {
e1.printStackTrace();
} catch (IllegalStateException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
return false;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
});
}
请帮助我表示感谢。