锁定老帖子 主题:ListView 展开/隐藏
精华帖 (0) :: 良好帖 (5) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-30
最后修改:2010-03-15
ListView 本意只是:让数据和TextView一次绑定 能自适应数据的长度 而自动+/-行数
但是 现在 要求 ListView 能支持 展开/隐藏 即:当点中某项时 其能显示更多内容 可以么? 当然
[代码 步骤] 1. 定义一下图片及文字数组 供显示用 int[] image = { R.drawable.beijing1_s,R.drawable.beijing2_s,R.drawable.beijing3_s,R.drawable.beijing4_s,R.drawable.beijing5_s }; String[] text = { "贝贝","晶晶","欢欢","盈盈","妮妮" };
2. 定义BaseAdapter 并根据点击的ID 做比较 决定是否添加更多内容 public class ListMoreAdapter extends BaseAdapter { Activity activity; LayoutInflater lInflater; public ListMoreAdapter(Activity a){ activity = a; lInflater = activity.getLayoutInflater(); } @Override public int getCount() { // TODO Auto-generated method stub return image.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LinearLayout layout = new LinearLayout(activity); layout.setOrientation(LinearLayout.VERTICAL); layout.addView(addTitleView(position)); if(ID==position){ layout.addView(addCustomView(position)); } return layout; } public View addTitleView(int i){ LinearLayout layout = new LinearLayout(activity); layout.setOrientation(LinearLayout.HORIZONTAL); ImageView iv = new ImageView(activity); iv.setImageResource(image[i]); layout.addView(iv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); TextView tv = new TextView(activity); tv.setText(text[i]); layout.addView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); layout.setGravity(Gravity.CENTER); return layout; } public View addCustomView(int i){ View view = new View(activity); switch(i){ case 0: ImageView iv = new ImageView(activity); iv.setImageResource(R.drawable.beijing4_b); view = iv; break; case 1: view = lInflater.inflate(R.layout.layout1, null); break; case 2: break; } return view; } }
3. 代码比较简单 没什么细说的 不理解的请跟帖 好答复之
4. emulator 运行截图:
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-10
SimpleAdapter是否可以实现这种效果?我尝试把你的代码写到一个继承SimpleAdapter的自定义Adapter里面去,似乎不行
|
|
返回顶楼 | |
发表时间:2010-03-10
sunburst 写道 SimpleAdapter是否可以实现这种效果?我尝试把你的代码写到一个继承SimpleAdapter的自定义Adapter里面去,似乎不行
应该可以吧 我的就是 extends BaseAdapter 不过你干嘛不直接 extends BaseAdapter呢?干嘛使用SimpleAdapter? 不解?有特殊要求么? |
|
返回顶楼 | |
发表时间:2010-03-11
gryphone 写道 sunburst 写道 SimpleAdapter是否可以实现这种效果?我尝试把你的代码写到一个继承SimpleAdapter的自定义Adapter里面去,似乎不行
应该可以吧 我的就是 extends BaseAdapter 不过你干嘛不直接 extends BaseAdapter呢?干嘛使用SimpleAdapter? 不解?有特殊要求么? 因为我用simpleAdapter绑定了一个数据样式,就是图标加一个大标题加一日期,然后再想实现你这个效果点击后展开 |
|
返回顶楼 | |
发表时间:2010-03-11
sunburst 写道 gryphone 写道 sunburst 写道 SimpleAdapter是否可以实现这种效果?我尝试把你的代码写到一个继承SimpleAdapter的自定义Adapter里面去,似乎不行
应该可以吧 我的就是 extends BaseAdapter 不过你干嘛不直接 extends BaseAdapter呢?干嘛使用SimpleAdapter? 不解?有特殊要求么? 因为我用simpleAdapter绑定了一个数据样式,就是图标加一个大标题加一日期,然后再想实现你这个效果点击后展开 那那也可以直接extends BaseAdapter 至于extends SimpleAdapter 实话说 我没试过 不过应该一样的吧 因为其实际也是 extends BaseAdapter 不过你也可以试试 |
|
返回顶楼 | |
发表时间:2010-03-11
为什么不用现成的ExpandableListView呢
|
|
返回顶楼 | |
发表时间:2010-03-14
请LZ把本例的完整的代码发上来
|
|
返回顶楼 | |
发表时间:2010-03-15
wjb_forward 写道 请LZ把本例的完整的代码发上来
OK! |
|
返回顶楼 | |
发表时间:2010-03-15
gryphone 写道 sunburst 写道 gryphone 写道 sunburst 写道 SimpleAdapter是否可以实现这种效果?我尝试把你的代码写到一个继承SimpleAdapter的自定义Adapter里面去,似乎不行
应该可以吧 我的就是 extends BaseAdapter 不过你干嘛不直接 extends BaseAdapter呢?干嘛使用SimpleAdapter? 不解?有特殊要求么? 因为我用simpleAdapter绑定了一个数据样式,就是图标加一个大标题加一日期,然后再想实现你这个效果点击后展开 那那也可以直接extends BaseAdapter 至于extends SimpleAdapter 实话说 我没试过 不过应该一样的吧 因为其实际也是 extends BaseAdapter 不过你也可以试试 我已经extends SimpleAdapter 了,所以不能extends BaseAdapter了,我尝试了一下,在SimpleAdapter,getview后面的加上楼主代码,在 SimpleAdapter原来getview中就会报错,去掉楼主的代码后正常 |
|
返回顶楼 | |
发表时间:2010-03-15
sunburst 写道 gryphone 写道 sunburst 写道 gryphone 写道 sunburst 写道 SimpleAdapter是否可以实现这种效果?我尝试把你的代码写到一个继承SimpleAdapter的自定义Adapter里面去,似乎不行
应该可以吧 我的就是 extends BaseAdapter 不过你干嘛不直接 extends BaseAdapter呢?干嘛使用SimpleAdapter? 不解?有特殊要求么? 因为我用simpleAdapter绑定了一个数据样式,就是图标加一个大标题加一日期,然后再想实现你这个效果点击后展开 那那也可以直接extends BaseAdapter 至于extends SimpleAdapter 实话说 我没试过 不过应该一样的吧 因为其实际也是 extends BaseAdapter 不过你也可以试试 我已经extends SimpleAdapter 了,所以不能extends BaseAdapter了,我尝试了一下,在SimpleAdapter,getview后面的加上楼主代码,在 SimpleAdapter原来getview中就会报错,去掉楼主的代码后正常 个人感觉 如果extends SimpleAdapter 的话 可能要重新定义其构造函数 混入你自己的参数 |
|
返回顶楼 | |