我有一个RecyclerView
,其中每个ViewHolder
包含一个嵌套的线性布局与一些TextViews
和一个按钮。 (按钮是Facebook ShareButton
,但我也看到了与常规Button
相同的行为。)当我点击ShareButton
一次,没有任何反应。当我再次点击它时,它是成功的。
一些线索:
focusable
和focusableInTouchMode
设置为false - 这对我的情况没有任何影响。bind
上再次调用ViewHolder
。相关的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
?
我仍然不确定为什么单击我的按钮时调用bind
方法。但是我可以通过将所有按钮逻辑移出bind
方法并进入ViewHolder构造函数方法来避免这种情况。我也转而在常规的ShareDialog
中使用Button
,以便我可以更好地控制onClick
。