1. 程式人生 > >Android自定義介面卡父類繼承BaseAdapter,自定義生成對話方塊工具類

Android自定義介面卡父類繼承BaseAdapter,自定義生成對話方塊工具類

工作內容:

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();
    }
}