`
玩野大人
  • 浏览: 14661 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

由SimpleCursorAdapter继承/定制出来的Adapter

阅读更多
package com.CursorAdapterTest;

import static com.db.MyOpenHelper.*;

import com.db.MyOpenHelper;
import android.app.Activity;
import android.content.ContentValues;
//...
//...
//省略部分代码
package com.CursorAdapterTest;
import android.widget.TextView;

public class CursorAdapterTest extends Activity {

	/** Called when the activity is first created. */
	MyOpenHelper                   				 myHelper ;		       //声明MyOpenHelper对象
	int []                         				 testId ;			   //声明用于存放联系人id的数组
	String []                      				 testName ;		       //声明用于存放联系人姓名的数组
	String []                      				 testPhone ;	       //声明用于存放联系人电话的数组
	ListView                       			     lv;				   //声明ListView对象
	private static  SQLiteDatabase db          = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //得到ListView的布局
        lv = (ListView)findViewById(R.id.lv);

        //打开数据库
        myHelper = new MyOpenHelper(this, DB_NAME);
        db = myHelper.getWritableDatabase();
        /*ContentValues values = new ContentValues();

        for(int i=0;i<100;i++){
        	values.put(NAME,"A");
        	values.put(PHONE,1234567+i);
        	db.insert(TABLE_NAME, null, values);
        }*/
        //得到数据库的cursor
        Cursor c = db.query(TABLE_NAME, null, null, null, null, null, ID);
        startManagingCursor(c);

        //实例化adapter
        Adapter adapter = new Adapter(this,
        		R.layout.listitem,
        		c,
        		new String[]{ID,NAME,PHONE},
        		new int[]{R.id.list_Id,R.id.list_Name,R.id.list_Phone});
        //绑定adapter
        lv.setAdapter(adapter);
    }
    public class Adapter extends SimpleCursorAdapter {

    	private LayoutInflater mInflater;

    	public Adapter (Context context, int layout, Cursor c, String[] from, int[] to) {
    		        super(context, layout, c, from, to);
    		    }

		@Override
    	public void bindView(View view, Context context, Cursor cursor) {
			//得到每一个item的布局文件
    		LinearLayout ll = null;
    		if (view == null) {
    			ll = (LinearLayout) mInflater.inflate(R.layout.listitem,null);
    		} else {
    			ll = (LinearLayout)view;
    		}

    		//通过cursor得到每一个字段的ColumnIndex
    		int idCol = cursor.getColumnIndex(ID);
    		int nameCol = cursor.getColumnIndex(NAME);
    		int phoneCol = cursor.getColumnIndex(PHONE);

    		int nCount = cursor.getPosition();
    		//int nCount = Integer.valueOf(cursor.getString(idCol));

    		//得到每一个数据控件
    		ImageView iv_TView = (ImageView)ll.findViewById(R.id.list_Iv);
        	TextView id_TV = (TextView)ll.findViewById(R.id.list_Id);
        	TextView name_TV = (TextView)ll.findViewById(R.id.list_Name);
        	TextView phone_TV = (TextView)ll.findViewById(R.id.list_Phone);

        	//设置每一项数据内容
        	if( nCount % 2 == 0){
        		iv_TView.setImageDrawable(getResources().getDrawable(R.drawable.r));
        	} else {
        		iv_TView.setImageDrawable(getResources().getDrawable(R.drawable.b));
        	}
        	id_TV.setText(cursor.getString(idCol));
        	name_TV.setText(cursor.getString(nameCol));
        	phone_TV.setText(cursor.getString(phoneCol));
    	}
    }
}

<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
	<listview android:id="@+id/lv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:dividerheight="1px" android:cachecolorhint="#00000000" android:smoothscrollbar="true">
	</listview>
</linearlayout>

<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content">
		<imageview android:id="@+id/list_Iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical">
		<linearlayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0">
			<textview android:id="@+id/list_Id" android:layout_width="wrap_content" android:layout_height="wrap_content">
			<textview android:id="@+id/list_Name" android:layout_width="wrap_content" android:layout_height="wrap_content">
			<textview android:id="@+id/list_Phone" android:layout_width="wrap_content" android:layout_height="wrap_content">
		</textview></textview></textview></linearlayout>
</imageview></linearlayout>
  • 大小: 40.8 KB
分享到:
评论

相关推荐

    adapter.doc

    在这个系统中,我们通常会遇到几种不同类型的Adapter,包括BaseAdapter、SimpleAdapter、ArrayAdapter以及SimpleCursorAdapter。下面我们将深入探讨这些Adapter的特性和用法。 首先,BaseAdapter是一个抽象类,它是...

    Android之自定义Adapter的ListView

    接着,创建了一个名为`ListViewAdapter`的自定义Adapter,继承自`BaseAdapter`,并传入上下文和数据集作为构造函数参数。然后,通过`listView.setAdapter(listViewAdapter)`将Adapter绑定到ListView上。 在`getView...

    Android之Adapter用法总结

    - 当系统提供的Adapter不能满足需求时,可以继承BaseAdapter并重写其方法,如`getView()`,`getCount()`,`getItem()`等,以实现自定义的视图展示和数据处理逻辑。 6. **Adapter优化** - 为了提高性能,Adapter的...

    BaseAdapter详解

    - 相比于其他Adapter类,`BaseAdapter`提供了更多的灵活性和定制化能力,开发者可以根据实际需求来自定义数据绑定逻辑。 2. **BaseAdapter的相关类结构**: - `BaseAdapter`继承自`Adapter`抽象类,并且实现了`...

    安卓ListActivity开发手册.doc

    定制自己的Adapter 如果SimpleAdapter或SimpleCursorAdapter不能满足需求,你可以创建自定义的Adapter。自定义Adapter需要继承BaseAdapter,并实现其中的方法,如`getCount()`、`getItem()`、`getItemId()`和`...

    Android自定义Adapter的ListView的思路及代码

    然而,Android API提供的预置Adapter,如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter,虽然方便快捷,但它们的功能较为有限,无法满足复杂的交互需求。此时,我们就需要自定义Adapter来实现更精细的控制。 ...

    Adapter实现ListView带多选框等状态的自定义控件的注意事项

    首先,Android提供了几种内置的Adapter,如ArrayAdapter和SimpleCursorAdapter,但它们可能无法满足复杂的布局需求。因此,我们需要自定义Adapter,继承自BaseAdapter。BaseAdapter是一个抽象类,它提供了一个框架,...

    SpinnerTest MyAdapter

    1. 继承BaseAdapter或者SpinnerAdapter,这是自定义适配器的基础。 2. 实现必要的方法: - `getCount()`: 返回数据源中的元素数量。 - `getItem(int position)`: 获取指定位置的元素。 - `getItemId(int position...

    android的listView实例

    自定义Adapter需要继承BaseAdapter或其子类,实现getCount(), getItem(), getItemId(), 和getView()方法。 6. **getView()方法** getView()是Adapter的核心,它负责为ListView的每个条目创建或复用一个View,并...

    主题:ListView 分页显示

    2. **适配器(Adapter)**:适配器是数据和ListView之间的桥梁,它负责将数据转换为ListView能够展示的视图。常见的适配器类型有ArrayAdapter、SimpleAdapter和SimpleCursorAdapter: - **ArrayAdapter**:最基础的...

    Android从零开始(十二)

    Spinner是Android SDK中的一个视图类,继承自AdapterView。它的工作原理是通过一个Adapter(适配器)将数据集与视图绑定,Adapter可以是ArrayList、Cursor或其他数据结构。当你点击Spinner时,它会弹出一个Dropdown ...

    Android带设置默认值的Spinner

    - 自定义Adapter需要继承`BaseAdapter`或上述现成的Adapter,并重写`getView()`方法,以便自由设计每个选项的视图。 5. **下拉菜单的自定义**: - 当Spinner模式为`dropdown`时,可以使用`SpinnerAdapter`的`...

    android 的listview

    常见的Adapter有ArrayAdapter、SimpleCursorAdapter等,需要重写`getView()`方法来定制每个列表项的视图。 2. **Adapter的实现** - 自定义Adapter:为了显示自定义的数据类型,通常需要继承BaseAdapter或直接使用...

    Android操作sqlite数据之自建导航

    开发者可以通过继承SQLiteOpenHelper来定制自己的数据库操作。 1. 创建数据库: 在Android中,你需要创建一个扩展自SQLiteOpenHelper的类。在这个类中,重写`onCreate()`方法来创建数据库表。例如,你可以这样定义...

    Android软件开发之ListView 详解源码

    Adapter是连接数据源和ListView的桥梁,它可以是ArrayAdapter、SimpleCursorAdapter或自定义的Adapter。 1. **Adapter原理**: - `getView()`方法是Adapter的核心,它负责根据传入的position创建或复用一个View,...

    listview使用方法

    同时,可以通过继承BaseAdapter或已有的Adapter类来实现自己的逻辑。 4. **点击事件处理** 可以为ListView的条目设置点击事件监听器,通过`setOnItemClickListener()`方法实现: ```java listView....

    Android中ListView的应用介绍

    - 自定义适配器需要继承BaseAdapter或CursorAdapter,重写其中的方法,如`getView()`,以实现自定义的视图创建和数据绑定。 6. **优化ListView**: - 为了提高性能,ListView支持视图复用,即convertView参数。在...

    Android中的列表视图(ListView)

    常见的Adapter有ArrayAdapter、SimpleCursorAdapter等。你需要创建一个继承自BaseAdapter的自定义适配器,重写其中的四个方法:getCount()、getItem()、getItemId()和getView()。getView()方法负责为每个列表项创建...

Global site tag (gtag.js) - Google Analytics