我想知道是否有任何可能的方法使用RecyclerView?
在此之前,我在ScrollView中使用了具有固定高度的RecyclerView,但这次我不知道项目的高度。
提示:在提出这个问题之前,我阅读了堆栈问题的所有问题和解决方案。
更新:一些解决方案显示了如何自行滚动RecyclerView,但我想显示它已扩展。
使用此行查看您的recyclerview视图:
android:nestedScrollingEnabled="false"
尝试一下,recyclerview将以灵活的高度平滑滚动
我在世界各地寻找这个问题的答案,但我没有找到这个流行问题的任何直接答案。最后我混合了一些技巧,解决了这个问题!
我的问题开始于我的老板要求我在ScrollView中使用RecyclerView,正如您所知,我们不能在彼此内部使用两个可滚动对象,除非我们为RecyclerViewer设置或知道固定项目高度。这就是答案:
步骤1:首先,您应该找到您的回收站查看灵活的项目高度,这可以从您的回收站查看
holder.itemView.post(new Runnable() {
@Override
public void run() {
int cellWidth = holder.itemView.getWidth();// this will give you cell width dynamically
int cellHeight = holder.itemView.getHeight();// this will give you cell height dynamically
dynamicHeight.HeightChange(position, cellHeight); //call your iterface hear
}
});
使用此代码,您可以在它们构建时找到您的项目高度,并通过接口将项目高度发送到您的活动。
对于那些有接口问题的朋友,我在下面留下了接口代码,可以写在适配器中。
public interface DynamicHeight {
void HeightChange (int position, int height);
}
步骤2:到目前为止,我们找到了项目高度,现在我们想将高度设置为我们的RecyclatorView。首先,我们应该计算项目高度的总和。在此步骤中,我们通过 BitMap 首先实现最后一步接口,并在您的活动或片段中编写以下代码来定义您的 RecyclerView:
@Override
public void HeightChange(int position, int height) {
itemHeight.put(position, height);
sumHeight = SumHashItem (itemHeight);
float density = activity.getResources().getDisplayMetrics().density;
float viewHeight = sumHeight * density;
review_recyclerView.getLayoutParams().height = (int) sumHeight;
int i = review_recyclerView.getLayoutParams().height;
}
int SumHashItem (HashMap<Integer, Integer> hashMap) {
int sum = 0;
for(Map.Entry<Integer, Integer> myItem: hashMap.entrySet()) {
sum += myItem.getValue();
}
return sum;
}
第三步:现在我们得到了您的RecyclerView高度的总和。对于最后一步,我们只需将我们在最后一步中编写的接口发送到适配器,代码如下:
reviewRecyclerAdapter = new ReviewRecyclerAdapter(activity, reviewList, review_recyclerView, this);
当你实现接口时,你应该把它和我使用它的上下文一起发送到你的。
尽情享受吧
如果您只想滚动,那么您可以使用NestedScrollView而不是ScrollView,因此您可以使用以下方式修改代码:
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
//design your content here with RecyclerView
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
在其他回收器视图中有一个回收器视图。两者都需要垂直滚动。外部回收器视图滚动正常,但内部回收器视图滚动不正常。 这是代码: ViewAdapter如下: 我尝试了以下两种回收商观点,但都无法解决问题 也尝试了这个:
主要活动: 适配器:
我有一个父回收器视图,其中包含一个水平回收器视图作为其项目。在其中,我将显示分类视频。当我开始滚动水平回收器视图时,应用程序崩溃。 错误是: 我的代码是category类 垂直适配器 水平适配器
当点击fab时,snack bar出现,为此我必须使用协调器布局将fab水平移动到snack bar上方。但现在回收器视图的前几个项目是不可见的。它只从项目3开始。能否有人帮助解决这一点和什么改变要做。提前谢谢!!
我正面临一个奇怪的错误,其中recyclerview只显示了一个项目。下面是我的recyclerview适配器的代码: 我已经在其他应用程序中使用了这段代码,它的工作非常完美。我已经检查了聊天数据,这也是完美的。 这里是指向git repo布局文件的链接:布局文件
我试图实现带有水平滚动的,所以我使用了带有水平方向的。问题是,我使用2种不同类型的项目填充RecyclerView,具有不同的高度。这是我对项目使用的布局: 这是包含的布局,基本上是这样的: 我使用的是一个,我只是更改了两个子视图的可见性。 我希望得到的结果是: 但我得到的是这个;使用第二种物品的高度将CardView切成两半: 我看到了这个帖子,和我的问题差不多,它推荐使用,于是,我尝试实现: