相关疑难解决方法(0)

处理按钮在RecyclerView中的行内单击

我正在使用以下代码来处理行点击.(来源)

static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {

    private GestureDetector gestureDetector;
    private ClickListener clickListener;

    public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
        this.clickListener = clickListener;
        gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }

            @Override
            public void onLongPress(MotionEvent e) {
                View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
                if (child != null && clickListener != null) {
                    clickListener.onLongClick(child, recyclerView.getChildPosition(child));
                }
            }
        });
    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

        View child …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

76
推荐指数
4
解决办法
9万
查看次数

调用onBindViewHolder时它是如何工作的?

我是初学者,我在理解一段代码时遇到了麻烦.有人可以在这个功能唤起时解释我,它的用途是什么?

这是我的代码:

    public void onBindViewHolder(myViewHolder holder, int position) {

        RecViewHolder currentdata = data.get(position);
        holder.favChecker = currentdata.getFavChecker();
        holder.serialID = currentdata.getSerialID();
        holder.theClassName = currentdata.getTheClassName();
}
Run Code Online (Sandbox Code Playgroud)

java android

55
推荐指数
2
解决办法
4万
查看次数

在视图中滚动时,recyclerView不会调用onBindViewHolder

这是注意到的:当它启动时,数据项索引0,1,...,5显示在视图中.并且看到onCreateViewHolder()和onBindViewHolder()被调用了.然后向上滚动顶部项目,并看到onCreateViewHolder()和onBindViewHolder()被调用索引6.然后向下滚动以将项目索引0带回视图.因为它没有被回收所以没有调用onBindViewHolder().

这是设计的,但有一个案例就是要调用onBindViewHolder.

当项目索引0超出视图,并单击视图中的任何项目时,将更改项目索引0的数据.当它滚动回到视图时,想要显示数据的变化.但由于未调用其onBindView,因此不会在UI中更新此行的数据更改.

它可以打电话

notifyDataSetChanged() 
Run Code Online (Sandbox Code Playgroud)

数据更改后强制重绘列表.但结果并不好,因为视图项上有图像并显示闪烁.

尝试使用LayoutManager获取强制更新的视图.问题是什么时候知道在LayoutManager的子视图中显示索引0的最佳时间?

有什么建议吗?谢谢!

android android-recyclerview

2
推荐指数
1
解决办法
3654
查看次数

标签 统计

android ×3

android-recyclerview ×2

java ×1