Android之RecyclerView控件的简单运用

来源:互联网 发布:淘宝中差评修改步骤 编辑:程序博客网 时间:2024/05/22 17:00

随着Android发展,Listview已经不能够很好的满足我们的需求了,这时候RecyclerView出现了。

今天我们就来谈谈RecyclerView的简单的使用

private RecyclerView rv_home_content;
private HomeFragmentAdapter myadapter;

rv_home_content = (RecyclerView) findViewById(R.id.rv_home_content);

//resultbeandata为填充的数据

myadapter=new HomeFragmentAdapter(mContext,resultbeandata);
rv_home_content.setAdapter(myadapter);
接下来就是重点了
public class HomeFragmentAdapter extends Adapter {    public static final int BANNER = 0;    public static final int CHANNEL = 1;               ...     //默认第一个为BANNER    private static int CurrentType = BANNER;    private Context mContext;
    private ResultBeanData resultbeandata;    private final LayoutInflater mInflater;    public HomeFragmentAdapter(Context mContext, ResultBeanData resultbeandata) {
        //从构造方法传进来的List的数据
        this.mContext = mContext;        this.resultbeandata = resultbeandata;        mInflater = LayoutInflater.from(mContext);    }    /*    * 创建viewholder    *    * */    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if (viewType == BANNER) {            return new BannerViewHolder(mContext, mInflater.inflate(R.layout.banner_viewpager, null));        } else if (viewType == CHANNEL) {            return new ChannelViewHolder(mContext, mInflater.inflate(R.layout.channel_item, null));        }         return null;    }    /*    * getview()    *   绑定数据    * */    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        if (getItemViewType(position) == BANNER) {            BannerViewHolder bannerviewholder = (BannerViewHolder) holder;
              //把数据设置到相应的控件,完成数据的填充            bannerviewholder.setData();        } else if (getItemViewType(position) == CHANNEL) {            ChannelViewHolder channelviewholder = (ChannelViewHolder) holder;            channelviewholder.setData();        }     }    /*    * 返回item的个数,实际开发,从1慢慢变到最大数    *    * */    @Override    public int getItemCount() {        return 2;    }    /*    * 放回0-1的item类型    * */    @Override    public int getItemViewType(int position) {        switch (position) {            case BANNER:                CurrentType = BANNER;                break;            case CHANNEL:                CurrentType = CHANNEL;                break;          }        return CurrentType;    }       //频道的viewholder    class ChannelViewHolder extends RecyclerView.ViewHolder {        private Context mContext;        private View itemView;        private GridView gv_channel;        public ChannelViewHolder(Context mContext, View itemView) {            super(itemView);            this.mContext = mContext;            this.itemView = itemView;
            //使用GridView填充            gv_channel = (GridView) itemView.findViewById(R.id.gv_channel);        }        public void setData() {            ChannelAdapter channelAdapter = new ChannelAdapter(mContext, resultbeandata);            gv_channel.setAdapter(channelAdapter);            gv_channel.setOnItemClickListener(new AdapterView.OnItemClickListener() {                @Override                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                    Toast.makeText(mContext, "position==" + position, Toast.LENGTH_SHORT).show();                }            });        }    }
public class ChannelAdapter extends BaseAdapter {     private Context mContext;    private  ResultBeanData resultbeandata;    public ChannelAdapter(Context mContext, ResultBeanData resultbeandata) {        this.mContext=mContext;        this.resultbeandata=resultbeandata;    }    @Override    public int getCount() {        return resultbeandata.size();    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewholder;        if(convertView==null){            convertView=View.inflate(mContext,R.layout.item_channel,null);            viewholder=new ViewHolder();            viewholder.iv_channel=(ImageView)convertView.findViewById(R.id.iv_channel);            viewholder.tv_des=(TextView) convertView.findViewById(R.id.tv_des);            convertView.setTag(viewholder);        }        else{            viewholder= (ViewHolder) convertView.getTag();        }        viewholder.tv_des.setText("hello");
        viewholder.iv_channel.setImageResource(R.drawable.a);
        return convertView;    }    class ViewHolder {        private ImageView iv_channel;        private TextView tv_des;    }}
}


原创粉丝点击