Я хочу использовать recylerview, чтобы показать большой вертикальный набор данных с большим объемом данных в каждой строке.
В настоящее время я использую LinearLayoutManager
Каждая строка имеет свой собственный ViewHolder, где я держу объект «RowView». Каждый RowView имеет фиксированную ширину.
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;
}
}
}
Вот код в моем контейнере EventsView, который имеет
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()) ничего не происходит. Я не хочу прокручивать до новой позиции в списке адаптеров. Я хочу видеть больше данных, которые в настоящее время находятся «за пределами экрана» для элементов, которые в настоящее время находятся на экране. У меня есть статический заголовок в верхней части «списка» с горизонтальной прокруткой. Когда пользователь перетаскивает заголовок, я хочу, чтобы список ниже оставался синхронизированным.
Любая помощь/рекомендации будут оценены