1。ListView Viewholder的坑

    /*** 默认带图片的menu adapter*/public static class MenuImageAdapter extends BaseAdapter {private List<Aliquot> mDataSet;private Context mContext;public MenuImageAdapter(List<Aliquot> dataSet, Context context) {this.mDataSet = dataSet;this.mContext = context;}@Overridepublic int getCount() {return mDataSet == null ? 0 : mDataSet.size();}@Overridepublic Object getItem(int position) {return mDataSet.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {MenuImageHolder holder = null;Aliquot aliquot = mDataSet.get(position);if (convertView == null) {holder = new MenuImageHolder();convertView = LayoutInflater.from(mContext).inflate(DEF_TEXT_IMAGE_ITEM_RES, null);holder.mImageViewLeft = (ImageView) convertView.findViewById(R.id.img_menu_dialog_left);holder.mImageViewRight = (ImageView) convertView.findViewById(R.id.img_menu_dialog_right);holder.mParentRl = (RelativeLayout) convertView.findViewById(R.id.dialog_menu_parent_rl);holder.mTextView = (TextView) convertView.findViewById(R.id.tv_menu_dialog);holder.mVline = (View) convertView.findViewById(R.id.shelf_dilog_item_v_line);convertView.setTag(holder);} else {holder = (MenuImageHolder) convertView.getTag();}if (aliquot.mSrcLeftDrawableId != 0) {holder.mImageViewLeft.setImageResource(aliquot.mSrcLeftDrawableId);holder.mImageViewLeft.setVisibility(View.VISIBLE);LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) holder.mParentRl.getLayoutParams();params.setMargins(15,0,0,0);}else{holder.mImageViewLeft.setVisibility(View.GONE);}if (aliquot.mSrcRightDrawableId != 0) {holder.mImageViewRight.setImageResource(aliquot.mSrcRightDrawableId);holder.mImageViewRight.setVisibility(View.VISIBLE);}else{holder.mImageViewRight.setVisibility(View.GONE);}//            if(position == mDataSet.size()-1){//                holder.mVline.setVisibility(View.INVISIBLE);
//            }else{//                holder.mVline.setVisibility(View.VISIBLE);
//            }holder.mTextView.setText(aliquot.mContent);return convertView;}}public static class MenuImageHolder {private TextView mTextView;//文字private ImageView mImageViewLeft;//图片在左侧private ImageView mImageViewRight;//图片在右侧private RelativeLayout mParentRl;private View mVline;//分割线}

其中:

if (aliquot.mSrcLeftDrawableId != 0) {holder.mImageViewLeft.setImageResource(aliquot.mSrcLeftDrawableId);holder.mImageViewLeft.setVisibility(View.VISIBLE);LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) holder.mParentRl.getLayoutParams();params.setMargins(15,0,0,0);}else{holder.mImageViewLeft.setVisibility(View.GONE);}

如果这里没有else的话,就会导致你的holder.mImageViewLeft 显示出来。因为你holder重用了嘛,用了holder之后,记得改状态。

2。线性布局的坑

水平线性布局如果被其中一个元素布满了(match_paraent),那么你写的后面的元素都不会显示出来了。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="@dimen/dialog_menutype_item_height"android:gravity="center_vertical"android:paddingLeft="@dimen/dialog_padding_left"android:orientation="horizontal"><ImageView
        android:id="@+id/img_menu_dialog_left"android:layout_width="wrap_content"android:layout_height="wrap_content"/><RelativeLayout
        android:id="@+id/dialog_menu_parent_rl"android:layout_width="match_parent"android:layout_height="@dimen/dialog_menutype_item_height"android:layout_marginLeft="15dp"><TextView
            android:id="@+id/tv_menu_dialog"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:textSize="15sp"android:textColor="@color/primary_color_1"/><View
            android:id="@+id/shelf_dilog_item_v_line"android:layout_width="match_parent"android:layout_height="2px"android:visibility="gone"android:layout_alignParentBottom="true"android:background="@color/zz_black_10_percent_transparent"></View></RelativeLayout><ImageView
        android:id="@+id/img_menu_dialog_right"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>

这个布局中id 为img_menu_dialog_right的元素永远也显示不出来。坑死我了,我开始没有意识到这个简单的问题。

ListView Viewholder的坑 线性布局的坑相关推荐

  1. android recyclerview 横向item 宽度,RecyclerView的item宽度不能全屏显示及线性布局与grid布局切换混乱解决方法...

    1.RecyclerView的Item宽度不能全屏显示 出现这种的原因有两种: 1.第一种是在adapter中加载inflater时parent传入为null 2.如果第一种不行,第二种原因就是在Re ...

  2. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  3. 精通android布局,Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    标题图 UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个 ...

  4. Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)

    文章目录 1. 开发第一个Hello World程序 1.1 开发程序 1.2 认识程序中的文件 1.3 Android程序结构 1.4 安卓程序打包 2. Android UI开发 2.1 布局的创 ...

  5. 【RecyclerView】 三、RecyclerView 布局 ( 线性布局管理器 LinearLayoutManager )

    文章目录 一.线性布局 1.线性布局管理器 LinearLayoutManager 2.垂直不翻转代码示例 3.水平翻转代码示例 二.完整代码示例 三.RecyclerView 相关资料 本篇博客主要 ...

  6. ListView 添加头部 和尾部 布局 (addHeaderView 和 addFooterView)

    ListView 添加头部 和尾部 布局  其实很简单 ,listview 暴露的有方法addHeaderView 和 addFooterView 从源码里面可以看到, addHeaderView 和 ...

  7. 线性布局上的一个小错误

    今天做一个demo测试,在一个布局上花费了一点时间 想想自己感到也是可笑,在这里记录下,自己要布局的效果 大致如下 在布局的图中做的效果是 这样的 下面是部分布局代码 <RelativeLayo ...

  8. LinearLayout (线性布局)的分析

    android提供了5中布局,线性布局,相对布局,帧布局,表格布局和绝对布局 线性和相对布局用的是最多的 下面要说的是线性布局 提到线性布局 一定要记住,它里面的所有组件一定不会重叠的, 切不会换行, ...

  9. android 线性布局位置,android – 如何在线性布局中更改视图的位置.

    所以我有一个已经填充了子项的线性布局.有没有办法改变其中一个孩子的位置? 如果有任何帮助的话,我正试图交换他们之间的观点. final LinearLayout parrent = (LinearLa ...

最新文章

  1. Nginx 解决WebApi跨域二次请求以及Vue单页面问题
  2. 数据结构 — 哈希表
  3. iPhone has denied the launch request
  4. redmine常见问题
  5. Apache Avro
  6. MOSS 2010 实现域账户 组员在线交流 Live Chat
  7. 讲解SQL Server定时作业job的设置方法
  8. hiveserver2的高可用HA
  9. composer的使用
  10. C语言1013山东理工大学试题,山东理工大学史上最全C语言PPTC程序设计(2基本数据与运算).ppt...
  11. 别熬夜加班了,Facebook 开源了一款代码推荐神器!| 程序员硬核评测
  12. Shell脚本中的export
  13. 【计算机网络笔记】物理层:概念传输媒体传输方式
  14. finally引起的异常丢失问题
  15. docker容器的使用
  16. 丢失更新的问题产生和解决
  17. 一个百分号%引起的事故
  18. git gui怎么拉取项目代码_Gitee码云如何更新项目上的代码?
  19. python是一种什么类型的高级语言_python介绍 编程语言分类及对比 python解释器安装(多版本共存) 变量 数据类型(三种)...
  20. Webtrends的跨域访客跟踪机制

热门文章

  1. Mysql共享锁实例_mysql共享锁与排他锁用法实例分析
  2. C#获取当前进程、项目路径的方法
  3. 13、GridView案例
  4. C++ Exercises(十八)
  5. 小技巧——让光驱符号定位在硬盘分区之后
  6. 《ActionScript 3.0基础教程》——1.4 对象参数
  7. 纯 CSS 实现高度与宽度成比例的效果
  8. JS数组键值,数组合并,
  9. Oracle.DataAccess.Client.OracleCommand”的类型初始值设定项引发异常
  10. /etc/rc.local 与 /etc/init.d Linux 开机自动运行程序