我想使用recylerview显示每行上包含大量数据的大型垂直数据集
我目前正在使用LinearLayoutManager
public class EventsRecylerAdapter extends RecyclerView.Adapter<EventsRecylerAdapter.ViewHolder>
{
private Context mContext;
private ArrayList<EventsStrip.Item> mItems;
public EventsRecylerAdapter(Context context, ArrayList<EventsStrip.Item> items) {
mContext = context;
mItems = items;
}
@Override
public EventsRecylerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
EventRowView v = new EventRowView(mContext);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
EventsStrip.Item item = mItems.get(position);
holder.mEventRowView.initItem(item);
}
@Override
public int getItemCount() {
return mItems.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public EventRowView mEventRowView;
public int getMeasuredHeight() {
mEventRowView.measure(0, 0);
return mEventRowView.getMeasuredHeight();
}
public ViewHolder(EventRowView v) {
super(v);
mEventRowView = v;
}
}
}
以下是我的&#34; EventsView&#34;中的代码。容器中有
protected void init(Context context) {
setOrientation(LinearLayout.VERTICAL);
ViewGroup.LayoutParams params = (ViewGroup.LayoutParams) getLayoutParams();
if (null == params)
params = generateDefaultLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
params.width = ViewGroup.LayoutParams.WRAP_CONTENT;
setLayoutParams(params);
mHeaderScrollView = (HorizontalScrollView) findViewById(R.id.headerScrollView);
mHeaderScrollView.getViewTreeObserver().addOnScrollChangedListener(new HeaderScrollViewListener());
mRecyclerView = (RecyclerView) findViewById(R.id.EventsRecylerView);
mRecyclerView.addOnScrollListener(new RecyclerScrollListener());
// use a linear layout manager
mLayoutManager = new LinearLayoutManager(mActivity);
mRecyclerView.setLayoutManager(mLayoutManager);
}
由于每行都比设备宽,我想启用水平滚动条,所以我可以横向滚动以查看每行中的更多数据。目前,我正在看到我希望看到的所有数据都被截断在屏幕的边缘。
另外,我想以编程方式水平滚动。当我调用scrollTo(newxvalue,recylerview.getScrollY())时没有任何反应。我不想滚动到适配器列表中的新位置。我希望看到更多当前正在关闭屏幕的数据&#34;在屏幕上当前的项目上。我在&#34;列表顶部有一个静态标题&#34;上面有水平滚动视图。当用户拖动标题时,我希望下面的列表保持同步。
任何帮助/指导都将不胜感激
答案 0 :(得分:0)
事实证明这比我想象的要简单得多。
在列表视图中,如果将列表视图放在ScrollView中,则会得到不可预测的结果。然而,在这种情况下,我只是将标题视图和RecylerView与垂直线性布局管理器放在水平ScrollView中,它看起来像预期的那样(即RecylerView没有与ListView相同的限制)。
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/headerScrollView"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:background="@color/navigation_bar_color"
android:id="@+id/eventRowLayout"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="2dp"
android:layout_alignParentTop="true" />
<android.support.v7.widget.RecyclerView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/EventsRecylerView"
android:layout_below="@+id/eventRowLayout">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
</HorizontalScrollView>