RecyclerView点击事件

来源:互联网 发布:百川环评工程师软件 编辑:程序博客网 时间:2024/06/10 22:42

导入依赖;

annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.0'compile 'com.jakewharton:butterknife:8.8.0'
testCompile 'junit:junit:4.12'compile 'com.android.support:recyclerview-v7:25.3.1'


布局:

<android.support.v7.widget.RecyclerView    android:id="@+id/recyclerview"    android:layout_width="fill_parent"    android:layout_height="fill_parent" />

适配器:(适配器用到了别的方法获取id,不会用的话换回来就可以了)

public class LoadAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    List<been.DataBean.ReturnDataBean.ComicsBean> items;    Context context;    OnItemClickListener listener;//定义监听事件    public LoadAdapter(Context context) {        this.items = new ArrayList<>();        this.context = context;    }    /**     * 加载新数据     *     * @param list     * @param page     */    public void setItems(List<been.DataBean.ReturnDataBean.ComicsBean> list, int page) {        if (page == 1) this.items.clear();        this.items.addAll(list);        notifyDataSetChanged();    }    /**     * 设置监听事件     *     * @param listener     */    public void setListener(OnItemClickListener listener) {        this.listener = listener;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);        return new ComicViewHolder(view);    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {        been.DataBean.ReturnDataBean.ComicsBean item = items.get(position);        if (holder instanceof ComicViewHolder) {            final ComicViewHolder viewHolder = (ComicViewHolder) holder;            viewHolder.name.setText(item.getName());            viewHolder.tag.setText(item.getTags().toString());            viewHolder.description.setText(item.getDescription());            viewHolder.contag.setText("月票"+item.getConTag());            Glide.with(context).load(item.getCover()).into(viewHolder.image);            viewHolder.image.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    if (listener!=null)                        listener.onImageClick(viewHolder.image,position);                }            });        }        holder.itemView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                if (listener != null)//记得判断null                    listener.onItemClick(view, position);            }        });    }    @Override    public int getItemCount() {        return items == null ? 0 : items.size();    }    static class ComicViewHolder extends RecyclerView.ViewHolder {        @BindView(R.id.name)        TextView name;        @BindView(R.id.tag)        TextView tag;        @BindView(R.id.description)        TextView description;        @BindView(R.id.contag)        TextView contag;        @BindView(R.id.image)        ImageView image;        public ComicViewHolder(View itemView) {            super(itemView);            ButterKnife.bind(this, itemView);        }    }    /**     * 点击事件回掉接口     */    public interface OnItemClickListener {        void onItemClick(View var2, int var3);        void onImageClick(View view, int pos);    }}

mainActivity:

public class MainActivity extends AppCompatActivity implements LoadAdapter.OnItemClickListener{    private RecyclerView mRecyclerView;    private LoadAdapter mAdapter;    private String urlPath ="http://app.u17.com/v3/appV3_3/android/phone/list/commonComicList?argValue=23&argName=sort&argCon=0&android_id=4058040115108878&v=3330110&model=GT-P5210&come_from=Tg002&page=";    private List<been.DataBean.ReturnDataBean.ComicsBean> list;    int page = 1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        x.view().inject(this);        xutils(page);        mRecyclerView = (RecyclerView)findViewById(R.id.recyclerview) ;        LinearLayoutManager layoutManager = new LinearLayoutManager(this);        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);        mRecyclerView.setLayoutManager(layoutManager);        mAdapter = new LoadAdapter(this);        mAdapter.setListener(this);    }    private void xutils(final int page) {        RequestParams entity = new RequestParams(urlPath+page);        x.http().get(entity, new Callback.CommonCallback<String>() {            @Override            public void onSuccess(String result) {                been been = new Gson().fromJson(result, test.com.xrecyclerview.been.class);                mAdapter.setItems(been.getData().getReturnData().getComics(), page);                mRecyclerView.setAdapter(mAdapter);            }            @Override            public void onError(Throwable ex, boolean isOnCallback) {            }            @Override            public void onCancelled(CancelledException cex) {            }            @Override            public void onFinished() {            }        });    }    @Override    public void onItemClick(View var2, int var3) {        Toast.makeText(this,"点击Item",Toast.LENGTH_LONG).show();    }    @Override    public void onImageClick(View view, int pos) {        Toast.makeText(this,"点击图片",Toast.LENGTH_LONG).show();    }}



原创粉丝点击