【问题标题】:getAdapterPosition not working (v24)getAdapterPosition 不工作 (v24)
【发布时间】:2017-02-28 00:06:47
【问题描述】:

虽然我在绑定视图持有人上使用,但由于某些原因,我收到“无法解决方法错误”。 正如你所看到的,这是我的第一次尝试,所以我可能会犯一些巨大的错误。 我尝试了多种方法,但似乎都没有。

package com.techhgeeks.techhgeeks;
import android.support.v7.widget.RecyclerView;
import android.content.Context;
import android.widget.ImageView;
import android.widget.TextView;


import android.view.LayoutInflater;
import java.util.List;
import com.bumptech.glide.Glide;
import android.view.View;
import android.view.ViewGroup;




public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener {
    private Context context;
    private List<MyData> my_data;

    public MyAdapter(Context context, List<MyData> my_data) {
        this.context = context;
        this.my_data = my_data;
    }



    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_child,parent,false);

        return new ViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        holder.description.setText(my_data.get(position).getDescription());
        Glide.with(context).load(my_data.get(position).getImage_link()).into(holder.imageView);

    }

    @Override
    public int getItemCount() {
        return my_data.size();
    }

    @Override
    public void onClick(View view) {
        int position = getAdapterPosition();

    }


    public  class ViewHolder extends  RecyclerView.ViewHolder{

        public TextView description;
        public ImageView imageView;

        public ViewHolder(View itemView) {
            super(itemView);
            description = (TextView) itemView.findViewById(R.id.textView);
            imageView = (ImageView) itemView.findViewById(R.id.image);
        }


    }


}

【问题讨论】:

  • 在哪里抛出“无法解决方法错误”?

标签: android android-recyclerview onclicklistener cardview


【解决方案1】:

getAdapterPosition() 是支持库第 22 版的一部分。您无法解决它,因为您仍在使用 rev 21。更改

'com.android.support:recyclerview-v7:21.0.+'

'com.android.support:recyclerview-v7:24.0.0'

然后构建项目。

【讨论】:

  • 我已经在使用 'com.android.support:recyclerview-v7:24.0.0'
【解决方案2】:

我发现问题是因为你在错误的地方使用了 getAdapterPosition。

首先,在原代码中去掉这部分(onClick):

int position = getAdapterPosition();

其次,修改onCreateViewHolder方法。

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_child, parent, false);
    final ViewHolder holder = new ViewHolder(itemView);
    itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int position = holder.getAdapterPosition();
        }
    });
    return new ViewHolder(itemView);
}

【讨论】:

  • 我正在使用'com.android.support:recyclerview-v7:24.0.+'
  • 尝试重建,清理 bulid ...同样的错误“无法解析方法 getAdapterPosition”你确定我的代码没有问题吗?
  • getAdapterPosition 方法在 ViewHolder 类中。
  • Intent 构造函数在此 onClick 方法下不起作用
猜你喜欢
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多