当我第一次点击按钮时,为什么在我的RecyclerView中调用bind?

问题描述 投票:1回答:1

我有一个RecyclerView,其中每个ViewHolder包含一个嵌套的线性布局与一些TextViews和一个按钮。 (按钮是Facebook ShareButton,但我也看到了与常规Button相同的行为。)当我点击ShareButton一次,没有任何反应。当我再次点击它时,它是成功的。

一些线索:

  1. stackoverflow上的其他答案说将按钮的focusablefocusableInTouchMode设置为false - 这对我的情况没有任何影响。
  2. 通过使用一些打印语句,我看到第一次单击按钮时,它会在每个bind上再次调用ViewHolder
  3. 如果我最小化应用程序,然后再次将其拉起,第一次单击就可以了。

相关的bind代码如下:

public void bind(Plaque plaque) {
    Log.d(TAG, "BINDING!");

    LinearLayout layout = (LinearLayout) itemView;
    layout.setDrawingCacheEnabled(true);
    layout.buildDrawingCache();
    Bitmap map = layout.getDrawingCache();

    SharePhoto photo = new SharePhoto.Builder()
            .setBitmap(map)
            .build();
    SharePhotoContent content = new SharePhotoContent.Builder()
            .addPhoto(photo)
            .build();
    mShareButton.setShareContent(content);
}

当我第一次点击mShareButton时,它只是回忆起这段代码(触发顶部的print语句)。当我再次点击它时,它会将内容发送到Facebook,就像它应该做的那样。任何想法如何让它第一次工作,而不再调用bind

android android-recyclerview facebook-sdk-4.0 share-button
1个回答
1
投票

我仍然不确定为什么单击我的按钮时调用bind方法。但是我可以通过将所有按钮逻辑移出bind方法并进入ViewHolder构造函数方法来避免这种情况。我也转而在常规的ShareDialog中使用Button,以便我可以更好地控制onClick

© www.soinside.com 2019 - 2024. All rights reserved.