Android自定義介面卡父類繼承BaseAdapter,自定義生成對話方塊工具類
阿新 • • 發佈:2019-02-11
工作內容:
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<Fruit> { 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/52083194return convertView; } }
例項2:
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();
}
}