У меня есть RecyclerView
, где каждый ViewHolder
содержит вложенную линейную компоновку с некоторыми TextViews
и кнопкой. (Кнопка Facebook ShareButton
, но я вижу то же поведение с обычным Button
.) Когда я нажимаю один раз ShareButton
, ничего не происходит. Когда я нажимаю на нее снова, она успешна.
Некоторые подсказки:
- В других ответах на stackoverflow говорится, чтобы установить для кнопок
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
в первый раз, он просто вызывает этот код (вызывая оператор печати вверху). Когда я нажимаю на нее снова, она отправляет контент в Facebook, как и положено.
Любые идеи, как заставить его работать в первый раз, без повторного вызова bind
?