1.布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ListView
android:id="@+id/lv_main_listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#0ff"
android:dividerHeight="1dp" >
</ListView>
</RelativeLayout>
2.子布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/ic_launcher" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="vertical"
>
<TextView
android:id="@+id/tuname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/turealname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
</LinearLayout>
3.bean包
package com.bwei.bean;
public class User {
public int id;
public String uface;
public String uid;
public String uname;
public String urealname;
public String ustate;
}
4.创建数据库,表
package com.bwei.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DbManager extends SQLiteOpenHelper {
public DbManager(Context context) {
super(context, "user.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql="CREATE TABLE IF NOT EXISTS user(_id INTEGER PRIMARY KEY AUTOINCREMENT,uface TEXT,uid TEXT,uname TEXT,urealname TEXT,ustate TEXT)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
5.增删改查-语句
package com.bwei.db;
import java.util.ArrayList;
import java.util.List;
import com.bwei.bean.User;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class SqliteHelper {
private DbManager helper;
private SQLiteDatabase db;
public SqliteHelper(Context context) {
helper = new DbManager(context);
db = helper.getWritableDatabase();
}
// 添加数据
public void add(List<User> uList) {
try {
db.beginTransaction();
for (User user : uList) {
ContentValues values = new ContentValues();
values.put("uface", user.uface);
values.put("uid", user.uid);
values.put("uname", user.uname);
values.put("urealname", user.urealname);
values.put("ustate", user.ustate);
db.insert("user", null, values);
}
db.setTransactionSuccessful();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
db.endTransaction();
}
}
// 查找方法
public List<User> Select() {
List<User> userlist = new ArrayList<User>();
Cursor cursor = db.query("user", null, null, null, null, null, null);
while (cursor.moveToNext()) {
User user = new User();
user.uface = cursor.getString(cursor.getColumnIndex("uface"));
user.id = cursor.getInt(cursor.getColumnIndex("_id"));
user.uid = cursor.getString(cursor.getColumnIndex("uid"));
user.uname = cursor.getString(cursor.getColumnIndex("uname"));
user.ustate = cursor.getString(cursor.getColumnIndex("ustate"));
user.urealname = cursor.getString(cursor
.getColumnIndex("urealname"));
userlist.add(user);
}
cursor.close();
return userlist;
}
// 修改
public void update(User u) {
ContentValues values = new ContentValues();
values.put("uname", u.uname);
values.put("urealname", u.urealname);
db.update("user", values, "_id=" + u.id, null);
}
// 删除
public void delete(int id) {
db.delete("user", "_id=" + id, null);
}
}
6.自定义适配器类
package com.bwei.adapter;
import java.util.ArrayList;
import java.util.List;
import com.bwei.bean.User;
import com.bwei.mysqliteopenhelper.MainActivity;
import com.bwei.mysqliteopenhelper.R;
import com.lidroid.xutils.BitmapUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter {
List<User> uList = new ArrayList<User>();
public void addrest(List<User> uList){
this.uList.clear();
this.uList.addAll(uList);
this.notifyDataSetChanged();
}
MainActivity context;
public MyAdapter(MainActivity context) {
this.context=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return uList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null){
convertView =View.inflate(context,R.layout.lv_item, null);
viewHolder = new ViewHolder();
viewHolder.tuname = (TextView)convertView.findViewById(R.id.tuname);
viewHolder.turealname = (TextView)convertView.findViewById(R.id.turealname);
viewHolder.imageView1 = (ImageView)convertView.findViewById(R.id.imageView1);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
BitmapUtils utils=new BitmapUtils(context);
utils.display(viewHolder.imageView1, uList.get(position).uface);
viewHolder.tuname.setText(uList.get(position).uname);
viewHolder.turealname.setText(uList.get(position).urealname);
return convertView;
}
class ViewHolder{
ImageView imageView1;
TextView tuname;
TextView turealname;
}
}
7.创建MyApplication
package com.bwei.mysqliteopenhelper;
import com.bwei.db.SqliteHelper;
import android.app.Application;
public class MyApplication extends Application {
public static SqliteHelper dbManager;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
dbManager = new SqliteHelper(getApplicationContext());
}
}
8.MainActivity主类
package com.bwei.mysqliteopenhelper;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Type;
import java.util.List;
import com.bwei.adapter.MyAdapter;
import com.bwei.bean.User;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView lv_main_listview;
private MyAdapter adapter;
private int len;
private List<User> uList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 控件
lv_main_listview = (ListView) findViewById(R.id.lv_main_listView);
// 适配器
adapter = new MyAdapter(this);
lv_main_listview.setAdapter(adapter);
// 解析son
Json();
// 查找数据库
initData();
lv_main_listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
final AlertDialog.Builder builder = new Builder(MainActivity.this);
builder.setTitle("请输入");
view = View.inflate(MainActivity.this, R.layout.update_item,
null);
final EditText euname = (EditText) view
.findViewById(R.id.euname);
final EditText eurealname = (EditText) view
.findViewById(R.id.eurealname);
builder.setView(view);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final User u = uList.get(position);
String t_euname = euname.getText().toString().trim();
String t_eurealname = eurealname.getText().toString().trim();
u.uname = t_euname;
u.urealname = t_eurealname;
MyApplication.dbManager.update(u);
// 更新adapter
initData();
}
});
builder.create().show();
}
});
// 长按删除
lv_main_listview
.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent,
View view, int position, long id) {
len = position;
registerForContextMenu(lv_main_listview);
return false;
}
});
}
private void initData() {
uList = MyApplication.dbManager.Select();
if(adapter!=null){
// 更新adapter
adapter.addrest(uList);
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle(uList.get(len).urealname);
menu.add("删除");
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getItemId() == 0) {
User u=uList.get(len);
MyApplication.dbManager.delete(u.id);
// 更新adapter
//adapter.addrest(uList);
initData();
}
return super.onContextItemSelected(item);
}
private void Json() {
// 获取文件流
try {
InputStream open = getAssets().open("alluser.json");
// 声明数组
byte bytes[] = new byte[1024];
// 长度
int len = 0;
// 声明字符串
String json = "";
while ((len = open.read(bytes)) != -1) {
json += new String(bytes, 0, len);
}
Gson gson = new Gson();
Type type = new TypeToken<List<User>>() {
}.getType();
List<User> uList = gson.fromJson(json, type);
MyApplication.dbManager.add(uList);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}