Android开发各种Adapter的用法
来源:互联网 发布:钢笔字 知乎 编辑:程序博客网 时间:2024/05/21 01:53
ListView和GridView的Adapter:
1、继承BaseAdapter
2、新建Holder类声明控件
private class DiyHolder{ TextView tv_job; ImageView iv_select_job; }
3、覆写getView中做好converView重用,用converView.setTag(diyHolder)
4、如果用到getItemViewType(),一般是从数据中赋值确定的,getView方法就要根据type来判断后再设定converView.setTag(diyHolder),一个type对应一个holder对象,
取出来是也要根据type来判断。
示例代码,只给getView();
@Override public View getView(final int position, View convertView, ViewGroup parent) { final ListTopHolder mListTopHolder; final CommentTitleHolder mCommentTitleHolder; final TopicManagerListInfo topicManagerListInfo = mInfo.get(position); final int type = getItemViewType(position); if (convertView == null) { if (type == TopicManagerListInfo.list_top) { convertView=LayoutInflater.from(parent.getContext()).inflate(R.layout.topic_manager_top_layout,null); ListTopHolder listTopHolder=new ListTopHolder(); listTopHolder.topic_banner_img=(ImageView) convertView.findViewById(R.id.topic_banner_img); listTopHolder.topic_title=(TextView) convertView.findViewById(R.id.topic_title); listTopHolder.topic_description=(TextView) convertView.findViewById(R.id.topic_description); convertView.setTag(listTopHolder); } else if (type == TopicManagerListInfo.user_title) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.topic_manager_list_title_layout, null); CommentTitleHolder commentTitleHolder = new CommentTitleHolder(); commentTitleHolder.comment_title_txt = (TextView) convertView.findViewById(R.id.comment_title_txt); convertView.setTag(commentTitleHolder); } } if (type == TopicManagerListInfo.list_top) { mListTopHolder=(ListTopHolder) convertView.getTag(); //话题banner if(topicManagerListInfo.getTopicBannerPath() != null && !topicManagerListInfo.getTopicBannerPath().isEmpty()){ String path=topicManagerListInfo.getTopicBannerPath(); mListTopHolder.topic_banner_img.setTag(path); ImageCacheManager.loadImage(path, ImageCacheManager.getImageListener(mListTopHolder.topic_banner_img, mContext.getResources().getDrawable(R.drawable.avatar_default), mContext.getResources().getDrawable(R.drawable.avatar_default), path)); ImageCacheManager.getImageListener(mListTopHolder.topic_banner_img, mContext.getResources().getDrawable(R.drawable.avatar_default), mContext.getResources().getDrawable(R.drawable.avatar_default), path); mListTopHolder.topic_banner_img.setVisibility(View.VISIBLE); }else{ mListTopHolder.topic_banner_img.setVisibility(View.GONE); } //话题标题 mListTopHolder.topic_title.setText(topicManagerListInfo.getTopicTitle()); //话题描述 mListTopHolder.topic_description.setText(topicManagerListInfo.getTopicDescription()); } else if (type == TopicManagerListInfo.user_title) { mCommentTitleHolder = (CommentTitleHolder) convertView.getTag(); //标题 mCommentTitleHolder.comment_title_txt.setText("话题管理"); mCommentTitleHolder.comment_title_txt.setTextSize(14); } return convertView; }
RecyclerView的Adapter
1、首先要setLayoutManager(),比如:setLayoutManager(new LinearLayoutManager(mContext)),这里的setLayoutManager()大有文章,竖排列,横排列,两列或者多列
都是有它来设置的。
2、继承RecyclerView.Adapter
3、DiyHolder需要继承RecyclerView.ViewHolder
4、onCreateViewHolder绑定布局item_layout
5、onBindViewHolder数据处理
整个Adapter的示例代码:
public class GreetWordsPreviewAdapter extends RecyclerView.Adapter{ private Context mContext; private ArrayList<String> mInfo = new ArrayList<>(); public GreetWordsPreviewAdapter(Context mContext, ArrayList<String> mInfo) { this.mContext = mContext; this.mInfo = mInfo; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(mContext).inflate(R.layout.item_greet_words_preview, parent, false); DiyHolder holder = new DiyHolder(v); return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { String msg = mInfo.get(position); if(holder instanceof DiyHolder){ DiyHolder diyHolder = (DiyHolder)holder; ImageLoaderUtil.loadCircular(diyHolder.iv_head, Utils.getUser().getHead_img_small(), mContext); diyHolder.tv_greet_word.setText(msg); } } @Override public long getItemId(int position) { return 0; } @Override public int getItemCount() { return mInfo.size(); } static class DiyHolder extends RecyclerView.ViewHolder { @BindById(R.id.iv_head) ImageView iv_head; @BindById(R.id.tv_greet_word) TextView tv_greet_word; public DiyHolder(View view) { super(view); PreIOC.binder(this,view); } }}
阅读全文
0 0
- Android开发之 。。各种Adapter的用法
- Android开发各种Adapter的用法
- Android各种Adapter的用法
- Android各种Adapter的用法
- Android各种Adapter的用法
- Android中各种Adapter的用法
- Android中各种Adapter的用法
- 各种Adapter的用法
- 各种Adapter的用法
- 各种Adapter的用法
- 各种Adapter的用法
- 各种Adapter的用法
- 各种Adapter的用法
- 各种Adapter的用法
- 各种Adapter的用法
- 各种Adapter的用法
- 安卓中各种Adapter的用法
- 安卓中各种Adapter的用法
- 洛谷 P2633 Count on a tree[bzoj2588](倍增lca+主席树)
- 关键词出价与排名,创意样式与创意撰写优化技巧
- RSA加解密与签名验签
- sklearn中朴素贝叶斯
- android am force-stop not work
- Android开发各种Adapter的用法
- Hashtable
- 连续最大和
- thinkphp5创建数据库
- 系统性能调优攻略
- 基本Linux命令学习
- JSP内置对象
- 使用yii2框架中用gii生成crud的views找不到生成文件
- PHP错误异常处理详解