public class VideoOnDemandActivity extends Activity {
    private RecyclerView mVieoRecycleview;
    private TitileBarView dateTimeView;
    private SuspectInfoModel suspectInfo;
    private VideoListAdapter videoListAdapter;
    private ArrayList<VideoListBean> mVideoList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_on_demand);
        suspectInfo = SuspectInfoStore.getInstance().suspectInfo;
        initView();
    private void initView() {
        mVideoList = new ArrayList<>();
        mVieoRecycleview = findViewById(R.id.video_recycleview);
        mVieoRecycleview.setHasFixedSize(true);
        mVieoRecycleview.setLayoutManager(new LinearLayoutManager(this));
        dateTimeView = (TitileBarView) findViewById(R.id.dateTimeView);
        if (suspectInfo != null) {
            dateTimeView.setType("登陆用户:");
            dateTimeView.setUserName(suspectInfo.getXM());
            dateTimeView.setTitle("视频点播");
            videoListAdapter = new VideoListAdapter(this,mVideoList,"");
             mVieoRecycleview.setAdapter(videoListAdapter);
            videoListAdapter.setmOnItemClickListener(new VideoListAdapter.OnItemClickListener() {
                @Override
                public void onItemClick(View view, int position, ArrayList<VideoListBean> msg) {
                    Toast.makeText(VideoOnDemandActivity.this, "点击了"+position, Toast.LENGTH_SHORT).show();
                    Log.e("---电视节目---点击",position+"");
                @Override
                public void onItemLongClick(View view, int position) {
                    Toast.makeText(VideoOnDemandActivity.this, "长恩了"+position, Toast.LENGTH_SHORT).show();
                    Log.e("---电视节目---长摁",position+"");

Bean代码:

public class VideoListBean {
    private String Id = "";
    private String Img = "";
    private String Name = "";
    private int imageId;
    private String selectTag = "";
    private int selectNum = 1;
    public VideoListBean(JSONObject item) {
        this.Id = item.optString("Id");
        this.Img = item.optString("Img");
        this.Name = item.optString("Name");
        this.imageId = item.optInt("imageId");
        this.selectTag = item.optString("selectTag");
        this.selectNum = item.optInt("selectNum");
    public VideoListBean(String name, int imageId) {
       this.Name = name;
       this.imageId = imageId;
    public String getId() {
        return Id;
    public void setId(String id) {
        Id = id;
    public String getImg() {
        return Img;
    public void setImg(String img) {
        Img = img;
    public String getName() {
        return Name;
    public void setName(String name) {
        Name = name;
    public int getImageId() {
        return imageId;
    public void setImageId(int imageId) {
        this.imageId = imageId;
    public String getSelectTag() {
        return selectTag;
    public void setSelectTag(String selectTag) {
        this.selectTag = selectTag;
    public int getSelectNum() {
        return selectNum;
    public void setSelectNum(int selectNum) {
        this.selectNum = selectNum;

Adapter代码:

public class VideoListAdapter extends RecyclerView.Adapter<VideoListViewHolder> {
    private LayoutInflater mInflater;
    private Context mContext;
    private ArrayList<VideoListBean> mDatas;
    private String mAdapterType;
    private int productnum = 1;
    private Account mAccount;
    //    private VolleyHelper mHttpHelper;
    double res;
    int ListSize = 0;
    private String itmeViewTag;
    int choosepos = 0;
    List<VideoListBean> mSubmitOrderList = null;
    public interface OnItemClickListener {
        void onItemClick(View view, int position, ArrayList<VideoListBean> msg);
        void onItemLongClick(View view, int position);
    private OnItemClickListener mOnItemClickListener;
    public void setmOnItemClickListener(OnItemClickListener listener) {
        this.mOnItemClickListener = listener;
    public VideoListAdapter(Context context, ArrayList<VideoListBean> datas, String adapterType) {
        this.mContext = context;
        this.mDatas = datas;
        this.itmeViewTag = adapterType;
        mInflater = LayoutInflater.from(context);
    public void updateData(ArrayList<VideoListBean> Datas) {
        if (Datas != null) {
            mDatas = Datas;
            notifyDataSetChanged();
    public void removeorder() {
        for (int i = 0; i < mDatas.size(); i++) {
            mDatas.remove(i);
        notifyDataSetChanged();
    @Override
    public VideoListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = null;
        mSubmitOrderList = new ArrayList<>();
        view = mInflater.inflate(R.layout.item_video, parent, false);
        VideoListViewHolder viewHolder = new VideoListViewHolder(view);
        viewHolder.setIsRecyclable(false);
        return viewHolder;
    @Override
    public void onBindViewHolder(final VideoListViewHolder holder, final int position) {
        if (choosepos == position){
            holder.fruitImage.setImageResource(R.drawable.ic_video);
        }else {
            holder.fruitImage.setImageResource(R.drawable.ic_launcher);
        try {
            holder.fruitName.setText(mDatas.get(position).getName());
            holder.mDeleteImg.setVisibility(View.INVISIBLE);
            holder.mNumTv.setVisibility(View.GONE);
        } catch (Exception e) {
            e.printStackTrace();
        if (mOnItemClickListener != null)
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    choosepos = position;
                    notifyDataSetChanged();
                    Log.e("Item点击", "Item点击" + position);
                    mOnItemClickListener.onItemClick(holder.itemView, position, mDatas);
//                    mOnItemClickListener.onItemLongClick(holder.itemView, position, mDatas.get(position).getName());
            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    mOnItemClickListener.onItemLongClick(holder.itemView,position);
//                    return false;
                    return true;
    @Override
    public int getItemCount() {
         * 这里在Account存储购物车数量,用来判断购物车是否为空,如果为空显示刷新页面
        try {
        } catch (Exception e) {
            e.printStackTrace();
        return 23;
//        return mDatas.size();
    class VideoListViewHolder extends RecyclerView.ViewHolder {
        TextView mNumTv;
        ImageView fruitImage;
        TextView fruitName;
        ImageView mDeleteImg;
        public VideoListViewHolder(View itemView) {
            super(itemView);
            fruitImage=(ImageView)itemView.findViewById(R.id.item_food_img);
            fruitName=(TextView) itemView.findViewById(R.id.item_food_name);
            mDeleteImg = itemView.findViewById(R.id.delete_img);
            mNumTv = itemView.findViewById(R.id.select_num_tv);

加油!!!

当使用 RecyclerView 来展示列表数据时,获取 item 的位置是一个常见的需求。RecyclerView 提供了多种获取 item 位置的方法,包括 getAdapterPosition()、getBindingAdapterPosition()、getAbsoluteAdapterPosition() 等等。 首先依賴(僅供參考): //recyclerview implementation 'com.android.support:recyclerview-v7:27.1.1' 然後項目結構: 首先:activity_main.xml的佈局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro... 如题,本文主要介绍RecyclerView的基本使用方法,像ListView一样展示多种类型的Item数据。 首先构造一个实体类:ItemPO,用来表示每个Item代表的数据类型: import java.io.Serializable; public class ItemPO implements Serializable { private static final long serialVersionUID = 7879752396036182745L; private 具体项目开发中,会有这样的需求:进入到一个列表(含RecyclerView)页面以后,定位到指定的一个item,并且将此item显示在顶部。 说到RecyclerViewitem定位,我们优先想到的可能是以下2种方式: scrollToPosition(int position); smoothScrollToPosition(int position); 第一个方法scrollToPosition(position)是定位到指定item,是瞬间显示在页面上,用户可见的范围。位置不固定。 最近在使用RecyclerViewde制作一个聊天界面的时候,页面总是显示不出来Item,仔细检查代码之后终于发现了问题,简单的记录一下: 我想要建立的是纵向item的RecyclerView,刚开始使用的确实横向布局的LinearLayout,导致每次 Activity的布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layou 1、依赖:implementation ‘com.android.support:recyclerview-v7:28.0.0-rc01’,后面的版本号,与implementation 'com.android.support:appcompat-v7:28.0.0-rc01’的版本号保持一致, 2、Adapter: package com.fpt.myrecycletest; import a... 如果你是个珍惜每分每秒或者想提高自己,珍惜流量,那不要往下看啦会浪费时间滴! 主要核心内容借鉴了该博客,文章思路 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2004.html 具体原理就不多描述网资料都有 ,总之RecyclerView想比list 怎么获取itemViewHolder正确:recyclerView.getChildViewHolder(view);错误(MyHolder) view.getTag();单选单选都是通过标志位实现的,就是给bean添加Boolean属性,标明是否选中。public class Person { private String name; private int age; <android.support.v17.leanback.widget.HorizontalGridView android:id="@+id/horizontal_gridView_chan... private int selectedIndex; //记录当前选中的条目索引 public void setSelectedIndex(int position) { this.selectedIndex = position; notifyDataSetChanged(); 在getView或onBindViewHolder方法中: if (selectedIndex == position) { import android.content.Context; import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view... RecyclerView是support.v7包中的控件,可以说是ListView和GridView的增强升级版。 实现了ViewHolder的复用优化布局,还将onCreatViewHolder和onBindViewHolder分离高度解耦 缺点就是:点击事件的丢了,这就很尴尬了... 本篇就来介绍一下ReyclerView点击事件的实现 先来看看效果图: