Vin*_*ing 5 android android-layout android-listview android-5.0-lollipop android-recyclerview
我正在开发一个显示游戏列表的应用程序,在每个游戏的itemView中,我还有一个要显示的视频列表.预览和结构如下.
我部署了一个RecyclerView作为窗口根视图,然后对于视频,我使用了网格式的RecyclerView来显示,所以这里我们得到了一个嵌套的RecyclerView结构.
但是有麻烦,因为游戏之间的视频数量不一致,我不希望视频列表的RecyclerView能够滚动,所以最好的方法是使View的高度伸展动态取决于它有多少行.我听到一个令人失望的结论说,没有办法从互联网上实现这一目标.真的吗?任何替代方案可以这样做?
到目前为止关于这个问题,我不知道要解决它,所以我手动更改RecyclerView的高度作为临时解决方案.
videoGridRecyclerView.getLayoutParams().height = rowCount * 242;
Run Code Online (Sandbox Code Playgroud)
鉴于视频项目是完全相同的结构,如果这些RecyclerViews可以在屏幕上刷掉它后重新使用该视频的itemViews会很好,它将需要更好的性能提升.
然后我试着让一个特定的RecycledViewPool传播到每个嵌套的RecyclerViews.
public class MainActivity extends Activity {
private RecyclerView.RecycledViewPool mViewPool;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// create the RecycledViewPool from first and re-use for each nested RecyclerViews.
mViewPool = new RecyclerView.RecycledViewPool();
...
}
}
Run Code Online (Sandbox Code Playgroud)
即使我完成了这项工作,我仍然注意到正在执行的onCreateViewHolder方法和膨胀计数器在我循环刷根RootlerView期间增加.
private static class VideoAdapter extends RecyclerView.Adapter<GridViewHolder> {
private List<Video> mVideoList;
private VideoAdapter(List<Video> videoList) {
mVideoList = videoList;
}
// this method would always invoke during i swipe the RecyclerView.
@Override
public GridViewHolder onCreateViewHolder(ViewGroup container, int viewType) {
Log.e("", String.format("createViewCount : %d", ++MainActivity.STAT_GAME_VIDEO_ITEM_COUNT));
return new GridViewHolder(inflate(container, R.layout.game_video_item)) {};
}
}
Run Code Online (Sandbox Code Playgroud)
我的这个想法会起作用吗?或者我做错了?我希望实现这种效果,任何其他建议,即使不是关于RecyclerView也会感激,感谢提前.
归档时间: |
|
查看次数: |
3489 次 |
最近记录: |