ListView详解5
来源:互联网 发布:会计帮软件下载 编辑:程序博客网 时间:2024/06/16 12:47
五、本次要讲的是一个listview的进阶效果,主要实现的功能是,单击显示的item时,会显示出一个大图,以突出效果,即抽屉效果的ListView。效果如下所示:
其主要实现思路是:在getView的时候,动态修改布局,将选中的item添加新的View,这样就做到了点击的时候,与其他的item不同的效果。
代码如下:
public class MainActivity extends ListActivity {DrawListAdapter adapter;int[] imgs={R.drawable.image,R.drawable.packed,R.drawable.paste,R.drawable.text,R.drawable.delete};String[] text={"第一抽屉","第二抽屉","第三抽屉","第四抽屉","第五抽屉"};int currentItem=0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); adapter = new DrawListAdapter(this); //setListAdapter和getListView方法是ListActivity的方法,分别用于设置adapter和获得一个listview this.setListAdapter(adapter); this.getListView().setOnItemClickListener(new OnItemClickListener(){public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubcurrentItem=arg2;//notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListViewadapter.notifyDataSetChanged();} }); } public class DrawListAdapter extends BaseAdapter{ Activity activity; LayoutInflater inflater; public DrawListAdapter(Activity a){ activity=a; inflater=activity.getLayoutInflater(); } public int getCount() {// TODO Auto-generated method stubreturn imgs.length;}public Object getItem(int arg0) {// TODO Auto-generated method stubreturn null;}public long getItemId(int position) {// TODO Auto-generated method stubreturn position;}public View getView(int position, View convertView, ViewGroup arg2) {// TODO Auto-generated method stubLinearLayout layout=new LinearLayout(activity);layout.setOrientation(LinearLayout.VERTICAL);layout.addView(addTitleView(position));if(currentItem==position){layout.addView(addCustomView(position));}return layout;}//获取选中项的内容private View addCustomView(int i) {// TODO Auto-generated method stubView view=new View(activity);ImageView iv=new ImageView(activity);//根据点击的position设置相应要显示的图片switch (i) {case 0:iv.setImageResource(R.drawable.ic_launcher);view=iv;break;case 1:iv.setImageResource(R.drawable.ic_launcher);view=iv;break;case 2:iv.setImageResource(R.drawable.ic_launcher);view=iv;break;case 3:iv.setImageResource(R.drawable.ic_launcher);view=iv;break;case 4:iv.setImageResource(R.drawable.ic_launcher);view=iv;break;}return view;}//获取list的标题内容private View addTitleView(int i) {// TODO Auto-generated method stubLinearLayout layout=new LinearLayout(activity);layout.setOrientation(LinearLayout.HORIZONTAL);ImageView iv=new ImageView(activity);iv.setImageResource(imgs[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;} }}
- ListView详解5
- listview详解
- ListView 详解
- ListView详解
- ListView详解
- ListView详解
- ListView详解
- listView详解
- ListView详解
- ListView详解
- ListView详解
- Listview详解
- ListView详解
- ListView详解
- ListView 详解
- ListView 详解
- ListView详解
- ListView详解
- Ubuntu共享xp系统文件-Vm tools的安装
- 磁盘读写原理
- C语言小得
- Android中Paint类的介绍
- 基于对话框的MFC应用程序GetWindowRect(),GetClientRect()探究
- ListView详解5
- 10305 - Ordering Tasks
- 图解"数据结构--内部排序算法"----归并排序
- 基于Selenium与JMeter的自动化测试构建
- CentOS 5.5下LAMP环境搭建之源码安装MySQL(mysql-5.5.28)
- 大型Flash项目性能优化:关注0ms方法
- 当了两天向导,带他进行了上海都市游61
- 全面解析《嵌入式程序员应该知道的16个问题》
- 汇编中的10H中断int 10h详细说明