工作内容:
1.不使用SQLiteHelper获取本地数据库中的表的内容
2.自定义适配器父类
3.自定义生成对话框的工具类
学习分享:
1.不使用SQLiteHelper,直接找到本地数据库文件打开,并获取其中的表内容
SQLiteDatabase sqliteDatabase = SQLiteDatabase.openOrCreateDatabase(File databaseFile,null);
参数:databaseFile是指数据库文件的File对象
2.自定义适配器父类,继承BaseAdapter【方便复用】
在以后使用适配器时,只需要继承它就可以非常方便的构造适配器
实例1:2个适配器父类主要不同点在于构造函数不同,添加数据的方式不同
适配器父类【1】
import android.content.Context;
import android.widget.BaseAdapter;
import java.util.List;
/**
* Created by Administrator on 2016/8/11.
* 适配器的泛型父类
*/
public abstract class BaseDataAdapter<E> extends BaseAdapter {
protected List<E> list;
protected int resourceID;
protected Context context;
// protected LayoutInflater layoutInflater; //用于解析出view
/**
* 构造函数
* @param context 上下文
* @param resourceID 资源文件ID(layout布局文件DD)
* @param list 数据
*/
public BaseDataAdapter(Context context,int resourceID, List<E> list) {
this.context = context;
this.resourceID = resourceID;
this.list = list;
//获取到layoutInflater
// this.layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return list.size();
}
@Override
public E getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
适配器父类【2】
import android.content.Context; import android.widget.BaseAdapter; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2016/8/25. */ public abstract class MyBaseAdapter<E> extends BaseAdapter { protected List<E> list = null; //数据 protected Context context = null; //上下文用于解析布局文件 protected int resourceID; //布局文件ID //构造函数 public MyBaseAdapter(Context context,int resourceID){ this.context = context; this.resourceID = resourceID; //在子类(适配器)中的getView方法中使用这两个参数得到解析过的View list = new ArrayList<>(); } /** * 设置数据 * 在Activity中调用,为适配器添加数据 * 在使用此方法后,需调用adapter.notifyDataSetChanged();刷新列表项 */ public void setData(List<E> addList){ this.list.addAll(addList); } @Override public int getCount() { return list.size(); } @Override public E getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } /** * 没有重写getView方法是原因 * 1.本类是个abstract类,可以不重写父类的抽象方法 * 2.每个适配器的getView方法都不同,不能在这里强些定制 */ // @Override // public View getView(int position, View convertView, ViewGroup parent) { // return null; // } }
子类适配器使用:
//Fruit是一个自定义类 public class FruitAdapter extends MyBaseAdapter{ public FruitAdapter(Context context, int resourceID) { super(context, resourceID); } @Override public View getView(int position, View convertView, ViewGroup parent) { //此处代码不再赘术,详情参考http://blog.csdn.net/yingtian648/article/details/52083194 return convertView; } }
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
/**
* Created by Administrator on 2016/8/11.
* 用于生成对话框的工具类
*/
public class DialogTools {
//不运行创建对象
private DialogTools(){}
/**
* 使用系统的对话框样式
* @param context 上下文(显示在哪个界面)
* @param title 对话框标题
* @param message 对话框标题内容
* @param intent 点击确定按钮后跳转的页面
*/
public static void open(final Context context, String title, String message, final Intent intent){
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle(title)
.setMessage(message)
.setPositiveButton("取消",null)
.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
context.startActivity(intent);
}
}).setCancelable(true)
.create();
dialog.show();
}
}