复杂listView的adapter的优化
来源:互联网 发布:tensorflow java 编辑:程序博客网 时间:2024/05/18 00:58
package com.study.mobilesafe.adapter;import java.util.List;import android.content.Context;import android.graphics.Color;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;import com.study.mobilesafe.R;import com.study.mobilesafe.db.dao.WatchDogDao;import com.study.mobilesafe.domain.AppInfo;public class AppsManagerAdapter extends BaseAdapter {private List<AppInfo> userInfos;private List<AppInfo> systemInfos;private LayoutInflater inflater;private Context context;private WatchDogDao watchDogDao;public AppsManagerAdapter(Context context, List<AppInfo> userInfos,List<AppInfo> systemInfos) {inflater = LayoutInflater.from(context);this.userInfos = userInfos;this.systemInfos = systemInfos;this.context = context;watchDogDao = new WatchDogDao(context);}@Overridepublic int getCount() {return userInfos.size() + systemInfos.size() + 2;}@Overridepublic Object getItem(int position) {// return infos.get(position);return null;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (position == 0) {TextView tv_ueser_apps_count = new TextView(context);tv_ueser_apps_count.setText("用户程序:(" + userInfos.size() + ")个");tv_ueser_apps_count.setBackgroundColor(Color.GRAY);return tv_ueser_apps_count;} else if (position == userInfos.size() + 1) {TextView tv_system_apps_count = new TextView(context);tv_system_apps_count.setText("系统程序:(" + systemInfos.size() + ")个");tv_system_apps_count.setBackgroundColor(Color.GRAY);return tv_system_apps_count;}ViewHolder holder = null;if (convertView != null && convertView instanceof RelativeLayout) {holder = (ViewHolder) convertView.getTag();} else {holder = new ViewHolder();convertView = inflater.inflate(R.layout.item_app_info, null);holder.iv_app_icon = (ImageView) convertView.findViewById(R.id.iv_app_icon);holder.tv_app_name = (TextView) convertView.findViewById(R.id.tv_app_name);holder.tv_app_isRom = (TextView) convertView.findViewById(R.id.tv_app_isRom);holder.tv_app_version = (TextView) convertView.findViewById(R.id.tv_app_version);holder.iv_lock = (ImageView) convertView.findViewById(R.id.iv_lock);convertView.setTag(holder);}AppInfo info;if (position <= userInfos.size()) {info = userInfos.get(position - 1);} else {info = systemInfos.get(position - userInfos.size() - 2);}holder.iv_app_icon.setImageDrawable(info.getIcon());// null.方法()holder.tv_app_name.setText(info.getName());if (info.isRom()) {holder.tv_app_isRom.setText("手机内存");} else {holder.tv_app_isRom.setText("SD卡");}holder.tv_app_version.setText(info.getVersionName());if (watchDogDao.queryIsLock(info.getPackageName())) {holder.iv_lock.setImageResource(R.drawable.lock);} else {holder.iv_lock.setImageResource(R.drawable.unlock);}if (info.getPackageName().equals(context.getPackageName())) {holder.iv_lock.setVisibility(View.INVISIBLE);}else{holder.iv_lock.setVisibility(View.VISIBLE);}return convertView;}class ViewHolder {ImageView iv_app_icon;TextView tv_app_name;TextView tv_app_isRom;TextView tv_app_version;ImageView iv_lock;}}
运行效果:注意上面的TextView的显示。
调用的Activity写法:
private void listViewScroll() {lv_apps_manager.setOnScrollListener(new OnScrollListener() {// 当滑动状态改变的时候调用@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {}// 当listView滑动的时候调用 ---!!!第一次加载界面的时候触发了滑动事件// --所以userInfos为空指针异常@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {if (userInfos != null && systemInfos != null) {if (firstVisibleItem >= userInfos.size() + 1) {tv_count.setText("系统程序(" + systemInfos.size() + ")个");} else {tv_count.setText("用户程序(" + userInfos.size() + ")个");}}}});}
0 0
- 复杂listView的adapter的优化
- ListView的Adapter优化
- listView的 Adapter优化
- ListView的adapter性能优化
- ListView GridView - Adapter的优化
- listview之adapter的优化
- listview超级优化的adapter
- ListView的自定义Adapter的性能优化
- ListView的Adapter的优化(MVC)
- ListView 的基础优化Adapter(一)
- ListView 中Adapter的优化
- ListView 中Adapter的优化
- 自定义Adapter中对ListView的优化
- 使用Adapter提供的convertView优化Listview
- 使用自定义Adapter的ListView优化方式
- ListView及其优化和Adapter的用法
- 优化复杂listview的一些思考
- Android 复杂布局的ListView优化思路
- MSVC编译参数
- tsuang简易教程-MAC版
- px dpi dip density
- ERROR: x86 emulation currently requires hardware acceleration!
- iOS9新系统下App Store应用上传新指南
- 复杂listView的adapter的优化
- iOS开发UI篇—无限轮播(功能完善)
- 获取本机ip
- mtk刷机/启动流程学习笔记
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***
- KSImageNamed-Xcode 7.1 崩溃
- UIView随textField弹出上升/下降
- Android SDK开发范例大全 ---3.5取得手机屏幕的大小
- 【vue】vue组件化开发初体验-示例vue-loader-example学习记录