zoukankan      html  css  js  c++  java
  • ListView的重用

    1. 使用ListView在两种单元格模式下的重用,效果见下图

    其中黑色的横杠是一种单元格模式,其他的是一种单元格模式,这两种格式的单元格交替出现并重用,不做一定的判断就会在重用的时候出现混乱。其中黑条单元格是纯文本,其他的是RelativeLayout布局。 

    public View getView(int position, View convertView, ViewGroup parent) {
                Log.e("John", "ProcessAdapter" + " # " + "position = " + position);
                // 设置两个标记就是系统和个人的分界,这里一开始是直接判断是否是标题然后直接返回的是纯文本格式的
                if (position == 0) {
                    Log.e("John", "ProcessAdapter" + " # " + "返回 用户进程");
                    TextView tv1 = new TextView(parent.getContext());
                    tv1.setText("用户进程");
                    return tv1;
                }
                if (position == (userProcess.size() + 1)) {
                    Log.e("John", "ProcessAdapter" + " # " + "返回 系统进程");
                    TextView tv2 = new TextView(parent.getContext());
                    tv2.setText("系统进程");
                    return tv2;
                }
    // 获取数据
    ProcessInfo pi;
    if (position < userProcess.size() + 1) { pi = userProcess.get(position - 1); } else { pi = sysProcess.get(position - userProcess.size() - 1 - 1); }
          // 关键这里自定义一个view用来,这个view区别于convertview,因为现在有了不同的形式的单元格view所以在传入进来的convertview可能会是两种格式的。
          // 就不像之前在convertview只有一种格式的时候我们只用了convertview来判断他是否是空,并且直接用convertview来进行填充视图,这里就用另一个view来填充视图,而convertview就只
          // 当做一个被传入的复用的视图来进行判断,当conviertview符合条件的时候我们就让这个view去使用convertview,但是如果convertview是空那么就view去进行填充。
    View view; ViewHolder vh;
    // 复用的规则 if (convertView != null && convertView instanceof RelativeLayout) { // 这里这个view获得重用的convertview,因为这个convertview符合下面要使用的view的条件 view = convertView; // 获取重用的view vh = (ViewHolder) view.getTag(); } else { Log.e("John", "ProcessAdapter" + " # " + "创建新的convertview"); vh = new ViewHolder(); view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_process_manage, null); vh.ivIcon = (ImageView) view.findViewById(R.id.iv_icon_process_manage); vh.tvName = (TextView) view.findViewById(R.id.tv_name_process_manage); vh.tvSize = (TextView) view.findViewById(R.id.tv_size_process_manage); vh.ckChecked = (CheckBox) view.findViewById(R.id.ck_item_process_manage); view.setTag(vh); } vh.ivIcon.setImageDrawable(pi.getIcon()); vh.tvName.setText(pi.getName()); String sizeStr = Formatter.formatFileSize(parent.getContext(), pi.getSize()); vh.tvSize.setText(sizeStr); vh.ckChecked.setChecked(pi.isChecked()); return view; }
  • 相关阅读:
    《ERP—从内部集成起步》目录
    你与开发高手的距离(转)
    《ERP从内部集成起步》读书笔记——第2章 从优化业务流程谈信息集成的必要性 2.2信息集成与实时共享 2.2.1信息孤岛割断了流程
    《ERP从内部集成起步》读书笔记——第2章 从优化业务流程谈信息集成的必要性 2.2信息集成与实时共享2.2.3信息集成的条件
    浴室里没有人水是我开的
    你的爱不离不弃
    找到你的幸福
    谁有选择谁就有痛苦
    “生态建筑”如何“生态”
    Kindness keep the world afloat
  • 原文地址:https://www.cnblogs.com/xxss0903/p/5883272.html
Copyright © 2011-2022 走看看