温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

自定义IBaseAdapter,简化适配器重复的步骤

发布时间:2020-08-02 02:51:39 来源:网络 阅读:442 作者:Mr丶耳钉哥 栏目:开发技术

目前我 listView 用的还是比较多,所以经常要适配器。就发现很多重复的步骤了。赶在今天状态好,就试着写了一个IBaseAdapter 

因为泛型不会用 百度了才知道怎么用。然后才知道 这个Baseadapter大神们早就写了,跟我想的没差。哦,应该是我的跟大神的基本相同。就记录一下了 IBaseAdapter<> BaseAdapter {     Context getContext() {         ;     }     Context ;     List<> ;     List<> getmLists() {         ;     }     setmLists(List<> mLists) {         .= mLists;     }     IBaseAdapter(Context context,List<> mLists) {         init(context,mLists);     }     IBaseAdapter(Context context) {         init(context,ArrayList<>());     }     upDate(List<> mLists){         .= mLists;         notifyDataSetChanged();     }     clean(){         (!= ) {             ..clear();             notifyDataSetChanged();         }     }     addAll(List<> list) {         (!= list) {             ..addAll(list);             notifyDataSetChanged();         }     }     remove(position){         (!= ) {             ..remove(position);             notifyDataSetChanged();         }     }     init(Context context,List<> mLists){         .= context;         .= mLists;     }     getLayoutId();     getView(position, View convertView);     getCount() {         == ?:.size();     }     getItem(position) {         == ?:.get(position);     }     getItemId(position) {         position;     }     View getView(position, View convertView, ViewGroup parent) {         (convertView == ){             layoutId = getLayoutId();             (layoutId == ){                 NullPointerException();             }             convertView = LayoutInflater.().inflate(layoutId,parent,);             AutoUtils.(convertView);         }         getView(position,convertView);         convertView;     }     ()     <View> (View convertView, id) {         SparseArray<View> viewHolder = (SparseArray<View>) convertView.getTag();         (viewHolder == ) {             viewHolder = SparseArray<View>();             convertView.setTag(viewHolder);         }         View childView = viewHolder.get(id);         (childView == ) {             childView = convertView.findViewById(id);             viewHolder.put(id, childView);         }         () childView;     } }

继承 该基类,实现两个方法  

getLayoutId()返回 布局ID getView(int position, View convertView) 里面操作你要写的逻辑 在 getView(int position, View convertView) 方法里面可以使用 getItem(int position)得到实体模型数据 然后提供一些七七八八的便捷方法 findChildView()是省去写ViewHolder的方法 附上使用例子 /**  * Created by chenguozhen on 2017/3/30.  *  eMail  1021632321@QQ.com  */ public class MainAuthorAdapter extends IBaseAdapter<RecommentAuthor> {     public MainAuthorAdapter(Context context, List<RecommentAuthor> mLists) {         super(context, mLists);     }     @Nullable     @Override     public int getLayoutId(){         return R.layout.list_column_item;     }     @Override     public void getView(int position, View convertView) {         RecommentAuthor recommentAuthor = getItem(position);         ImageView head = findChildView(convertView, R.id.ivHeadForListColumn);         TextView title = findChildView(convertView, R.id.tvTitleForListColumn);         TextView content = findChildView(convertView, R.id.tvContextForListColumn);         TextView time = findChildView(convertView, R.id.tvTimeForListColumn);         TextView money = findChildView(convertView, R.id.tvMoneyForListColumn);         GlideManager.loadImage(getContext(),                 recommentAuthor.getHead_img(),                 R.mipmap.default_head_ic,                 R.mipmap.default_head_ic,                 head);         title.setText(recommentAuthor.getAuthor_name());         content.setText(recommentAuthor.getColumn_name());         time.setText(recommentAuthor.getCreate_date());         money.setVisibility(View.GONE);     } }

大概就这样了。下班收队

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI