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,包括BaseAdapter、SimpleAdapter、ArrayAdapter以及SimpleCursorAdapter。下面我们将深入探讨这些Adapter的特性和用法。 首先,BaseAdapter是一个抽象类,它是...
接着,创建了一个名为`ListViewAdapter`的自定义Adapter,继承自`BaseAdapter`,并传入上下文和数据集作为构造函数参数。然后,通过`listView.setAdapter(listViewAdapter)`将Adapter绑定到ListView上。 在`getView...
- 当系统提供的Adapter不能满足需求时,可以继承BaseAdapter并重写其方法,如`getView()`,`getCount()`,`getItem()`等,以实现自定义的视图展示和数据处理逻辑。 6. **Adapter优化** - 为了提高性能,Adapter的...
- 相比于其他Adapter类,`BaseAdapter`提供了更多的灵活性和定制化能力,开发者可以根据实际需求来自定义数据绑定逻辑。 2. **BaseAdapter的相关类结构**: - `BaseAdapter`继承自`Adapter`抽象类,并且实现了`...
定制自己的Adapter 如果SimpleAdapter或SimpleCursorAdapter不能满足需求,你可以创建自定义的Adapter。自定义Adapter需要继承BaseAdapter,并实现其中的方法,如`getCount()`、`getItem()`、`getItemId()`和`...
然而,Android API提供的预置Adapter,如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter,虽然方便快捷,但它们的功能较为有限,无法满足复杂的交互需求。此时,我们就需要自定义Adapter来实现更精细的控制。 ...
首先,Android提供了几种内置的Adapter,如ArrayAdapter和SimpleCursorAdapter,但它们可能无法满足复杂的布局需求。因此,我们需要自定义Adapter,继承自BaseAdapter。BaseAdapter是一个抽象类,它提供了一个框架,...
1. 继承BaseAdapter或者SpinnerAdapter,这是自定义适配器的基础。 2. 实现必要的方法: - `getCount()`: 返回数据源中的元素数量。 - `getItem(int position)`: 获取指定位置的元素。 - `getItemId(int position...
自定义Adapter需要继承BaseAdapter或其子类,实现getCount(), getItem(), getItemId(), 和getView()方法。 6. **getView()方法** getView()是Adapter的核心,它负责为ListView的每个条目创建或复用一个View,并...
2. **适配器(Adapter)**:适配器是数据和ListView之间的桥梁,它负责将数据转换为ListView能够展示的视图。常见的适配器类型有ArrayAdapter、SimpleAdapter和SimpleCursorAdapter: - **ArrayAdapter**:最基础的...
Spinner是Android SDK中的一个视图类,继承自AdapterView。它的工作原理是通过一个Adapter(适配器)将数据集与视图绑定,Adapter可以是ArrayList、Cursor或其他数据结构。当你点击Spinner时,它会弹出一个Dropdown ...
- 自定义Adapter需要继承`BaseAdapter`或上述现成的Adapter,并重写`getView()`方法,以便自由设计每个选项的视图。 5. **下拉菜单的自定义**: - 当Spinner模式为`dropdown`时,可以使用`SpinnerAdapter`的`...
常见的Adapter有ArrayAdapter、SimpleCursorAdapter等,需要重写`getView()`方法来定制每个列表项的视图。 2. **Adapter的实现** - 自定义Adapter:为了显示自定义的数据类型,通常需要继承BaseAdapter或直接使用...
开发者可以通过继承SQLiteOpenHelper来定制自己的数据库操作。 1. 创建数据库: 在Android中,你需要创建一个扩展自SQLiteOpenHelper的类。在这个类中,重写`onCreate()`方法来创建数据库表。例如,你可以这样定义...
Adapter是连接数据源和ListView的桥梁,它可以是ArrayAdapter、SimpleCursorAdapter或自定义的Adapter。 1. **Adapter原理**: - `getView()`方法是Adapter的核心,它负责根据传入的position创建或复用一个View,...
同时,可以通过继承BaseAdapter或已有的Adapter类来实现自己的逻辑。 4. **点击事件处理** 可以为ListView的条目设置点击事件监听器,通过`setOnItemClickListener()`方法实现: ```java listView....
- 自定义适配器需要继承BaseAdapter或CursorAdapter,重写其中的方法,如`getView()`,以实现自定义的视图创建和数据绑定。 6. **优化ListView**: - 为了提高性能,ListView支持视图复用,即convertView参数。在...
常见的Adapter有ArrayAdapter、SimpleCursorAdapter等。你需要创建一个继承自BaseAdapter的自定义适配器,重写其中的四个方法:getCount()、getItem()、getItemId()和getView()。getView()方法负责为每个列表项创建...