首页 > 代码库 > android listview综合使用演示样例_结合数据库操作和listitem单击长按等事件处理
android listview综合使用演示样例_结合数据库操作和listitem单击长按等事件处理
本演示样例说明:
1.自己定义listview条目样式,自己定义listview显示列数的多少,灵活与数据库中字段绑定.
2.实现对DB的增删改查,而且操作后listview自己主动刷新.
3.响应用户操作点击事件,演示样例中展示单击时取出主键Id和其它内容.
4.响应用户操作长按事件,演示样例中展示长按时依据主键Id来编辑和删除数据.
5.表现层与数据处理层分开,不依赖于cursor(使用cursor不易表现和业务分离),支持接口编程.
6.使用数据库处理框架AHibernate灵活操作sqlite数据库,详见: http://blog.csdn.net/lk_blog/article/details/7455992
本演示样例效果图:
列出主要代码:
1.list.xml:
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/child" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#E3D25E" android:orientation="horizontal" > <!-- 若想隐藏id增加此属性: android:visibility="gone",这样做有点相似于Html中hidden域 --> <TextView android:id="@+id/idTo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ff0000" /> <TextView android:id="@+id/nameTo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="5px" android:paddingLeft="50px" android:paddingTop="5px" android:text="No data" android:textColor="#0000ff" android:textSize="20sp" /> <TextView android:id="@+id/ageTo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="5px" android:paddingLeft="50px" android:paddingTop="5px" android:text="No data" android:textColor="#00ff00" android:textSize="20sp" /> </LinearLayout>
2.MainActivity.java:
package com.tgb.lk.listview; import java.util.List; import java.util.Map; import com.tgb.lk.demo.dao.StudentDao; import com.tgb.lk.demo.dao.impl.StudentDaoImpl; import com.tgb.lk.demo.model.Student; import com.tgb.lk.listview.R; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.text.TextUtils; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.Button; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; /** * 欢迎訪问我的博客进行对代码交流: http://blog.csdn.net/lk_blog * 数据库处理使用AHibernate框架,详见:http://blog.csdn.net/lk_blog/article/details/7455992 * @author likun */ public class MainActivity extends Activity { private static final int ITEM_MODIFY = 1; private static final int ITEM_DELETE = 2; // 定义接口 private StudentDao dao = null; private ListView lv = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 加入 Button btnAdd = (Button) findViewById(R.id.btnAdd); btnAdd.setOnClickListener(listener); // 显示前3条数据 Button btnShow = (Button) findViewById(R.id.btnShow); btnShow.setOnClickListener(listener); // 删除数据 Button btnClear = (Button) findViewById(R.id.btnClear); btnClear.setOnClickListener(listener); lv = (ListView) findViewById(R.id.lvStudent); // 设置在条目上单击监听器 lv.setOnItemClickListener(itemListener); // 设置长按事件 registerForContextMenu(lv); // 显示全部数据 showData(-1); } // 显示数据,num小于等于0时显示全部数据,num大于0时显示前N条. private void showData(int num) { dao = (dao == null ? new StudentDaoImpl(this) : dao); List<Map<String, String>> data = http://www.mamicode.com/null;>
3.数据库处理层:StudentDaoImpl.java:package com.tgb.lk.demo.dao.impl; import java.util.List; import java.util.Map; import com.tgb.lk.ahibernate.dao.impl.BaseDaoImpl; import com.tgb.lk.demo.dao.StudentDao; import com.tgb.lk.demo.model.Student; import com.tgb.lk.demo.util.DBHelper; import android.content.Context; //本文数据库处理引用jar包AHibernate处理. //AHibernate的具体使用教程演示样例地址: http://blog.csdn.net/lk_blog/article/details/7455992 //AHibernate源码交流地址: http://blog.csdn.net/lk_blog/article/details/7456125 //AHibernate jar包下载及源码下载地址: http://download.csdn.net/detail/lk_blog/4222048 public class StudentDaoImpl extends BaseDaoImpl<Student> implements StudentDao { public StudentDaoImpl(Context context) { super(new DBHelper(context)); } // 返回一个List,List中的对象是以sql中的列的小写形式为key的Map.(本例中 _id,name,age为key) public List<Map<String, String>> queryAllStudent() { String sql = "select _id, name,age from t_student"; return super.query2MapList(sql, null); } // 返回一个List,List中的对象是以sql中的列的小写形式为key的Map.(本例中 _id,name,age为key) public List<Map<String, String>> queryTopN(int num) { String sql = "select _id, name,age from t_student limit ?"; return super.query2MapList(sql, new String[] { String.valueOf(num) }); } public void deleteData() { String sql = "delete from t_student"; super.execSql(sql, null); } }本演示样例源码下载地址: http://download.csdn.net/detail/lk_blog/4278055最后,希望大家指教,对本文不足之处进行批评指正.
android listview综合使用演示样例_结合数据库操作和listitem单击长按等事件处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。