getAdapterPosition返回错误的值?

时间:2015-10-22 23:08:28

标签: android android-recyclerview android-adapter android-viewholder

我尝试不再使用text而我正试图熟悉ListView。 在我尝试在VERTICAL RecyclerView中使用HORIZONTAL RecyclerView之前使用RecyclerView没问题,我在这里搜索并找到答案,谢谢。 我也希望能回答我的问题。

我正在使用RecyclerView作为RecyclerView的{​​{1}}作为CardView项来处理OnClickListener次点击,我没有问题。 当ViewHolder点击气球时,尝试在CardView上创建分享按钮时会出现问题,GreenDroid图书馆有三个选项FacebookTwitterGoogle+点击那些我点击使用getAdapterPosition点击视图的位置,它一直返回错误的值。 这是我的代码..

 public class ViewHolder extends RecyclerView.ViewHolder implements
        OnClickListener {

    private ImageView imgViewItem;
    private TextView textViewTitle;
    private ImageView imgViewShare;

    public ViewHolder(View view) {
        super(view);

        imgViewItem = (ImageView) view
                .findViewById(R.id.img_view_item_no_description);
        imgViewItem.setAdjustViewBounds(true);
        textViewTitle = (TextView) view
                .findViewById(R.id.text_view_title_no_description);

        prepareQuickActionGrid();
        imgViewShare = (ImageView) view
                .findViewById(R.id.img_view_share_no_description);

        imgViewShare.setOnClickListener(this);

        view.setOnClickListener(this);

    }
    @Override
    public void onClick(View v) {

        if (v.equals(imgViewShare)) {
            grid.show(v);
        } else {

            Intent intent = new Intent(context,
                    McDonaldsPagerActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra(Constants.TITLES_TAG, titles);
            intent.putExtra(Constants.IMAGES_TAG, imgs);
            intent.putExtra(Constants.ID_TAG, id);
            context.startActivity(intent);
        }

    }

prepareQuickActionGrid() ..

private void prepareQuickActionGrid() {
        grid = new QuickActionGrid(context);
        grid.addQuickAction(new MyQuickAction(context,
                R.drawable.facebook_50x50, R.string.facebook));
        grid.addQuickAction(new MyQuickAction(context,
                R.drawable.twitter_50x50, R.string.twitter));
        grid.addQuickAction(new MyQuickAction(context,
                R.drawable.g_plus_50x50, R.string.g_plus));
        grid.setOnQuickActionClickListener(new OnQuickActionClickListener() {
            @Override
            public void onQuickActionClicked(QuickActionWidget widget,
                    int gridPosition) {
                // the problem is here .. wrong value is returned all the time
                int position = getLayoutPosition();
                Log.d("position", "" + position);
                // wrong position results in wrong title and wrong image
                switch (gridPosition) {
                case 0:
                    share(Constants.FACEBOOK, imgs[position],
                            titles[position]);
                    break;
                case 1:
                    share(Constants.TWITTER, imgs[position],
                            titles[position]);
                    break;
                case 2:
                    share(Constants.G_PLUS, imgs[position],
                            titles[position]);
                    break;
                }
            }
        });
}

我尝试使用getAdapterPosition(),但它也会返回错误的值。 我的代码有什么问题。 任何克服这个问题的建议。

1 个答案:

答案 0 :(得分:-1)

解决此问题的一种快速方法是将代码放在onBindViewHolder方法中,您可以访问该位置。