如何仅显示从当前位置到水平 RecyclerView 的一项?

Posted

技术标签:

【中文标题】如何仅显示从当前位置到水平 RecyclerView 的一项?【英文标题】:How can I show only one item from current position to horizontal RecyclerView? 【发布时间】:2020-09-17 07:40:42 【问题描述】:

我有具有 GridView 的水平 RecyclerView。当我滚动 RecyclerView 时,同时出现 2 个元素。我只想在当前位置显示项目。

活动:

recyclerView = findViewById(R.id.recyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false);
recyclerView.setHasFixedSize(false);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(new MyRecyclerViewAdapter(this, getTotalCount()));

我的适配器:

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHolder> 

    private int count;
    private Context context;

    public MyRecyclerViewAdapter(Context context, int count) 
        this.context = context;
        this.count = count;
    

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) 
        return new MyViewHolder(ViewUtil.inflate(LayoutInflater.from(context), parent, R.layout.my_recyclerView));
    

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) 
        MyGridViewAdapter myGridViewAdapter = new MyGridViewAdapter(position);
        holder.gridView.setAdapter(myGridViewAdapter);
    

    @Override
    public int getItemCount() 
        return count;
    

    static class MyViewHolder extends RecyclerView.ViewHolder 

        private GridView gridView;

        MyViewHolder(View itemView) 
            super(itemView);
            gridView = itemView.findViewById(R.id.grid);
        
    

【问题讨论】:

嗨 propoLis,请尝试将 recyclerView 列表项的高度设置为 match_parent 并查看 【参考方案1】:

我认为你应该使用PagerSnapHelper

val snapHelper = PagerSnapHelper()
snapHelper.attachToRecyclerView(recyclerView)

【讨论】:

【参考方案2】:

1-始终使用“wrap_content”作为行的高度,否则在“match_parent”中它将占据整个屏幕的单行。

2-也可以以dp取高度。

【讨论】:

请添加布局

以上是关于如何仅显示从当前位置到水平 RecyclerView 的一项?的主要内容,如果未能解决你的问题,请参考以下文章

如何在iphone的地图中显示从当前位置到目的地位置的方向

如何在 ListView 中仅显示偶数位置项?

Google从当前位置到已知位置的方向路线

如何在谷歌地图android中显示当前位置的平滑移动

如何仅在地图上的半径(圆圈)内显示标记?

如何仅使用 CSS 使 HTML 列表水平显示而不是垂直显示?