Получить текущий ViewHolder от BaseAdapter - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь изменить позицию внутреннего реселлера в BaseAdapter из фрагмента. Я определил глобальную ссылку ViewHolder для доступа viewholder.recyclerViewMatchCandidateUserProfilePictures. Но я понял, что моя глобальная ссылка viewHolder задает видоискатель последнего элемента. Я могу нажать кнопку для первого элемента в списке, однако определенное мной действие выполняется с последним элементом просмотра в моем адаптере. Но я хочу получить доступ к текущей ссылке viewHolder. Тогда я могу делать операции на текущем viewHolder. Что мне делать?

активировать показать следующую фотографию из фрагмента:

//...
mMatchScreenFragmentAdapter.showNextPhoto();
//...

А это мой адаптер:

public class MatchScreenFragmentAdapter extends BaseAdapter {

private ArrayList<UserInfo> mOppositeSexUserList;
private Context mContext;
private UserFavoriteArtistsRecyclerViewAdapter mUserFavoriteArtistsRecyclerViewAdapter;

ViewHolder viewHolder;


public MatchScreenFragmentAdapter(ArrayList<UserInfo> oppositeSexUserList, Context context) {
    mOppositeSexUserList = oppositeSexUserList;
    mContext = context;
}

@Override
public int getCount() {
    return mOppositeSexUserList.size();
}

@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {
        convertView = LayoutInflater.from(mContext).inflate(R.layout.match_screen_adapter_item, parent, false);
        viewHolder = new ViewHolder(convertView);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }


    //...

    UserProfileImagesRecyclerViewAdapter userProfileImagesRecyclerViewAdapter = new UserProfileImagesRecyclerViewAdapter(user.getUserProfilePicturePaths(), mContext);
    viewHolder.recyclerViewMatchCandidateUserProfilePictures.setPagingEnabled(false);
    viewHolder.recyclerViewMatchCandidateUserProfilePictures.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
    viewHolder.recyclerViewMatchCandidateUserProfilePictures.setHasFixedSize(true);
    viewHolder.recyclerViewMatchCandidateUserProfilePictures.setAdapter(userProfileImagesRecyclerViewAdapter);



    return convertView;
}

public void showNextPhoto() {
    viewHolder.recyclerViewMatchCandidateUserProfilePictures.smoothScrollToPosition(2);
}

static class ViewHolder {
    @BindView(R.id.recyclerViewMatchCandidateUserProfilePictures)
    NonTouchableRecyclerView recyclerViewMatchCandidateUserProfilePictures;

    private ViewHolder(View view) {
        ButterKnife.bind(this, view);
    }
}
}
...