`
dyingbleed
  • 浏览: 117267 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

【Android】继承SimpleCursorAdapter定制Adapter

 
阅读更多

SimpleCursorAdapter是一个简单的adapter,提供数据库Cursor到TextView的映射。

在实际开发过程中,除了TextView外,往往还需要依赖于数据库数据的其它的组件。

通过继承SimpleCursorAdapter,重写bindView(View view, Context context, Cursor cursor)来实现

 

示例代码

Main.java

 

package dyingbleed.iteye;

import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SimpleCursorAdapter;

public class Main extends ListActivity {
	
	private MySQLiteOpenHelper sqlite;
	private MyListViewAdapter adapter;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        sqlite = new MySQLiteOpenHelper(this);
        
        initListView();
    }
    
    @Override
	protected void onDestroy() {
    	sqlite.close();
		super.onDestroy();
	}
    
    private void initListView() {
    	SQLiteDatabase readableDB = sqlite.getReadableDatabase();
    	Cursor cursor = readableDB.query(MySQLiteOpenHelper.TABLE_NAME, null, null, null, null, null, null);
        adapter = new MyListViewAdapter(this, cursor);
        setListAdapter(adapter);
    }

	private class MyListViewAdapter extends SimpleCursorAdapter {

    	public MyListViewAdapter(Context context, Cursor c) {
    		super(context, R.layout.item, c, new String[] {MySQLiteOpenHelper.VOLUMN_NAME}, new int[] {R.id.item_NameTextView});
    	}

    	@Override
    	public void bindView(View view, Context context, Cursor cursor) {
    		super.bindView(view, context, cursor);
    		final int id = cursor.getInt(cursor.getColumnIndex(MySQLiteOpenHelper.VOLUMN_ID));
    		Button delete = (Button) view.findViewById(R.id.item_DeleteButton);
    		delete.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				SQLiteDatabase writableDB = sqlite.getWritableDatabase();
    				writableDB.delete(MySQLiteOpenHelper.TABLE_NAME
    						, MySQLiteOpenHelper.VOLUMN_ID+"=?" //添加"=?"
    						, new String[] {String.valueOf(id)});
    				writableDB.close();
    				initListView();
    			}
    		});
    	}

    }

}

 

MySQLiteOpenHelper.java

package dyingbleed.iteye;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
	
	public static final String DATABASE_NAME = "dyingbleed";
	
	public static final String TABLE_NAME = "list";
	public static final String VOLUMN_ID = "_id";
	public static final String VOLUMN_NAME = "name";

	public MySQLiteOpenHelper(Context context) {
		super(context, TABLE_NAME, null, 1);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		String sql = "CREATE TABLE IF NOT EXISTS "
				+TABLE_NAME
				+"("
				+VOLUMN_ID
				+" INTEGER PRIMARY KEY AUTOINCREMENT,"
				+VOLUMN_NAME
				+" TEXT UNIQUE)";
		db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		
	}

} 

 

运行截图

  • 大小: 18.2 KB
分享到:
评论
2 楼 dyingbleed 2012-08-25  
sword_java 写道
实现的 太片面了, 只有 delete操作, 如果点击Item项呢? 还有, 不能每次点击new一个listener, 应该继承下

这只是一个范例,哥!范例!!!
1 楼 sword_java 2012-04-16  
实现的 太片面了, 只有 delete操作, 如果点击Item项呢? 还有, 不能每次点击new一个listener, 应该继承下

相关推荐

    Android listview与adapter用法

    - 在Android中,Adapter通常实现了一个或多个特定接口,例如BaseAdapter、SimpleAdapter、ArrayAdapter和SimpleCursorAdapter等。这些Adapter提供了不同的功能和灵活性,以适应不同场景的需求。 2. **Adapter的...

    Adapter继承关系结构图

    对于Android开发者而言,理解`Adapter`的继承结构及其与相关接口的关系至关重要。 #### 二、Adapter继承结构图分析 根据所提供的信息,“Adapter的继承图示说明”表明了一个详细的`Adapter`继承结构图。虽然具体的...

    android ListView及ArrayAdapter,SimpleCursorAdapter,SimpleAdapter用法示例

    在实际应用中,我们通常需要自定义布局来满足复杂的UI需求,可以通过继承BaseAdapter实现自定义Adapter。在自定义Adapter中,重写`getView()`方法来返回每个列表项的View对象。 总结,ArrayAdapter适用于简单的数据...

    android(Adapter)适配器用法总结

    Android 中的 Adapter 是连接后端数据和前端显示的适配器接口,是数据和 UI(View)之间一个重要的纽带。在常见的 View(ListView,GridView)等地方都需要用到 Adapter。Adapter 的主要作用是将数据映射到视图上,...

    Android之Adapter用法总结

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

    Android之自定义Adapter的ListView

    总结起来,自定义Adapter在Android开发中扮演了至关重要的角色,它允许开发者根据需求定制ListView的每一个元素,提供更灵活的界面设计和交互体验。通过创建自定义Adapter并实现相关方法,我们可以实现更复杂的列表...

    6.Android界面编程(3补充)Adapter.pptx

    BaseAdapter 是 Android 中最基本的 Adapter 类,它是一个抽象类,需要继承它来实现具体的 Adapter。继承 BaseAdapter 需要实现许多方法,因此具有较高的灵活性。但是,这也意味着需要更多的编程工作和更多的逻辑...

    Android listview与adapter详解及实例代码

    ArrayAdapter适用于绑定数组数据,SimpleAdapter用于绑定XML中定义的控件与数据,SimpleCursorAdapter则用于处理数据库查询结果,而BaseAdapter是所有Adapter的基础,我们可以自定义继承于它的Adapter以满足特定需求...

    adapter.doc

    在Android开发中,Adapter是一个至关重要的组件,它起到了数据源和UI组件之间的桥梁作用,将数据转换为可显示的视图。在这个系统中,我们通常会遇到几种不同类型的Adapter,包括BaseAdapter、SimpleAdapter、...

    浅析Android之Adapter用法总结

    在Android中,有多种预定义的Adapter类供开发者选择,包括BaseAdapter、SimpleAdapter、ArrayAdapter和SimpleCursorAdapter等。BaseAdapter是一个抽象类,提供了最基本的框架,开发者可以根据需求重写必要的方法以...

    Adapter放到ListView的三种方式

    SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, android.R.layout.simple_list_item_1, cursor, new String[] { "column_name" }, new int[] { android.R.id.text1 }); listView....

    基于Eclipse的 Android Adapter在ListView和GridView中的应用

    ListView的简单介绍与使用 GridView的简单介绍与使用 自定义BaseAdapter BaseAdapter的三种使用方式 ...BaseAdapter:抽象类,实际开发中我们会继承这个类并且重写相关方法,用得最多的一个Adapter!

    使用三种Adapter构建ListView

    SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, R.layout.list_item, cursor, new String[]{"column1", "column2"}, new int[]{R.id.view1, R.id.view2}, 0 ); listView.setAdapter(adapter);...

    C# xamarin android listview简单使用

    在Xamarin.Android中,我们可以使用BaseAdapter或已有的适配器,如ArrayAdapter、SimpleCursorAdapter等。 **1. 创建ListView** 在布局文件(如activity_main.xml)中添加ListView控件: ```xml android:id="@+...

    Android带设置默认值的Spinner

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

    SQLite适配器使用

    SQLite适配器(Adapter)在Android开发中扮演着重要角色,它们帮助我们把SQLite数据库中的数据转换成用户友好的UI展示,通常在ListView或RecyclerView等视图组件中使用。以下是关于SQLite适配器的详细知识: 1. ...

    Android自定义spinner下拉框实现的实现

    2. 创建自定义的Adapter:继承BaseAdapter或者已有的Adapter,如ArrayAdapter,并重写其中的方法,如`getView()`,以便在该方法中使用自定义布局文件渲染每个列表项。 ```java public class CustomAdapter extends ...

Global site tag (gtag.js) - Google Analytics