自定义CursorAdapter,实现ListView中动态加载button,和点击事件
2011-07-19 18:59
627 查看
前言:
Android中的自带的CursorAdapter适配器可以加载固定格式的数据绑定。但在实际应用开发中,会碰到ListView中Item项显示根据数据不同,而变化显示。
举例:在我们实际开发中碰到这样的问题
根据一个主题答题情况,显示不同的按钮,且点击按钮后,转到各自的处理界面。
【主题状态】第一次答题,显示 【开始】按钮
事件:点击按钮,下载题库,转到答题界面
【主题状态】答题还未结束,显示 【继续】按钮
事件:点击按钮,转到答题界面
【主题状态】全部答题完成,显示 【重做】按钮
事件:点击按钮,清空答题痕迹,转到答题界面,重新答题
实现的效果图:
View Code
3.2 自定义CursorAdapter
3.3 界面后台调用
view sourceprint?
Android中的自带的CursorAdapter适配器可以加载固定格式的数据绑定。但在实际应用开发中,会碰到ListView中Item项显示根据数据不同,而变化显示。
举例:在我们实际开发中碰到这样的问题
根据一个主题答题情况,显示不同的按钮,且点击按钮后,转到各自的处理界面。
【主题状态】第一次答题,显示 【开始】按钮
事件:点击按钮,下载题库,转到答题界面
【主题状态】答题还未结束,显示 【继续】按钮
事件:点击按钮,转到答题界面
【主题状态】全部答题完成,显示 【重做】按钮
事件:点击按钮,清空答题痕迹,转到答题界面,重新答题
实现的效果图:
View Code
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:id="@+id/relativeLayout1" android:background="@drawable/cl_itemback" android:layout_width="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout4" > <TextView android:layout_width="60px" android:layout_height="wrap_content" android:id="@+id/theme_id" android:visibility="gone"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout4" > <TextView android:layout_marginLeft="10px" android:textSize="18px" android:textColor="#000000" android:text="" android:id="@+id/txt_themetitle" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <TextView android:layout_marginLeft="10px" android:textSize="14px" android:layout_marginTop="5px" android:textColor="#000000" android:text="" android:id="@+id/txt_themedescribe" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> </LinearLayout> <LinearLayout android:gravity="center_vertical" android:orientation="vertical" android:layout_width="wrap_content" android:layout_marginTop="15px" android:paddingRight="10px" android:layout_height="wrap_content" android:id="@+id/linearLayout4" android:layout_alignParentRight="true" > <ImageView android:src="@drawable/cl_begin" android:id="@+id/imgv_exbut" android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView> </LinearLayout> </RelativeLayout>
3.2 自定义CursorAdapter
/* */ public class CursorAdapter_ExecuteTheme extends CursorAdapter { private LayoutInflater mInflater; private Context mContext; TextView theme_id; public CursorAdapter_ExecuteTheme(Context context, Cursor c) { super(context, c); mContext = context; mInflater = LayoutInflater.from(context); } @Override public void bindView(View view, Context context, Cursor cursor) { theme_id = (TextView) view.findViewById(R.id.theme_id); TextView txt_themetitle = (TextView) view.findViewById(R.id.txt_themetitle); TextView txt_themedescribe=(TextView) view.findViewById(R.id.txt_themedescribe); ImageView img_exbut=(ImageView)view.findViewById(R.id.imgv_exbut); theme_id.setText(cursor.getString(0)); txt_themetitle.setText(cursor.getString(2)); // //pk as _id,catalogFK,Name,3GuessCount,4State,5CurIndex,Describe from CLTheme txt_themedescribe.setText("已做("+cursor.getString(5)+")全部("+cursor.getString(3) +")"); int state=cursor.getInt(4); img_exbut.setTag(cursor.getString(0)); if((state==ProjectConstant.ThemeState_BEGGING)||(state==ProjectConstant.ThemeState_NONE))//主题开始 { if(state==ProjectConstant.ThemeState_BEGGING) img_exbut.setImageResource(R.drawable.cl_goon); img_exbut.setOnClickListener(new ImageView.OnClickListener() { public void onClick(View v){ SoundManager.Instance.playSound("SOUND_WELCOME"); String id=v.getTag().toString(); //获取当前主题状态 //创建当前测试业务逻辑并加载选择的主题数据 ExerciseBussiness.SelectTheme(id,ProjectConstant.ThemeType_Classic ,mContext); Intent i = new Intent((Activity)mContext,ExerciseGuess.class); i.putExtra("themefk",id); mContext.startActivity(i); ((Activity)mContext).finish(); } }); }else if(state==ProjectConstant.ThemeState_END)//重新做 { img_exbut.setImageResource(R.drawable.cl_redo); img_exbut.setOnClickListener(new ImageView.OnClickListener() { public void onClick(View v){ SoundManager.Instance.playSound("SOUND_WELCOME"); String id=v.getTag().toString(); ExerciseBussiness.ReDoTheme(id ,mContext);//重新做题 Intent i = new Intent((Activity)mContext,ExerciseGuess.class); i.putExtra("themefk",id); mContext.startActivity(i); ((Activity)mContext).finish(); } }); } } @Override public View newView(Context arg0, Cursor arg1, ViewGroup arg2) { return mInflater.inflate(R.layout.sub_extheme_item, arg2, false); } }
3.3 界面后台调用
view sourceprint?
ListView ectheme_list =(ListView)findViewById(R.id.ectheme_list); |
ThemeCatalogDataReadHelper model= new ThemeCatalogDataReadHelper( this ); |
Cursor cursor =model.GetEcList( this .getIntent().getStringExtra( "catalogpk" )); |
CursorAdapter_ExecuteTheme adapter= new CursorAdapter_ExecuteTheme( this ,cursor); |
ectheme_list.setAdapter(adapter); |
相关文章推荐
- (Android学习之路)Android中listView结合自定义适配器,并实现item中button点击事件
- android 自定义ListView实现下拉刷新、分页加载、点击事件——自定义控件学习(七)
- 想实现在ListFragment里面的ListView的item里面的Button的点击事件
- Android自定义View之快速实现下拉刷新, 点击加载更多ListView
- android自定义BaseAdapter,实现从网络加载包含图片的listview
- ExpandableListView 动态加载 点击一级菜单时再加载二级菜单的内容实现
- 2014-10-27Android学习------布局处理(八)------自定义ListView的监听事件和Adapter的实现-----城市列表应用程序
- ListView使用自定义适配器的情况下实现适配器的文本和图标控件点击事件执行Activity界面中的方法
- 自定义adapter的基础上Listview优化方案以及几个小错误(checkbox吃掉点击事件以及对象重复问题)
- Android中ListView的自定义Adapter监听Item中Button,实现跳转到一个新的Activity
- ANDROID中自定义ADAPTER实现LISTVIEW动态刷新进度条
- Android中自定义Adapter实现ListView动态刷新进度条
- 自定义ListView适配器Adapter引用布局文件的情况下实现点击列表项时背景颜色为灰色
- 小白求教!listview item 含有button 点击事件怎么实现?
- Android中自定义Adapter实现ListView动态刷新进度条
- ExpandableListView 实现点击某个group的时候再去请求网络动态加载子视图中的数据
- Android中自定义Adapter实现ListView动态刷新进度条
- 关于在自定义View中添加Button按钮以及实现点击事件
- 自定义ListView实现中间项动态变大的效果(不是自定义Adapter)
- ListView控件中item中实现的Button的点击事件