基于FastDatabase的适配器

来源:互联网 发布:淘宝被禁言了怎么解除 编辑:程序博客网 时间:2024/06/06 01:43

fastLib库是一个Android平台通用库,能快速提高项目效率。fastlib库

fastLib中有一个FastDatabase用来简化对数据库操作

这次我带来基于FastDatabase的适配器,在批量取数据显示时很有帮助

假设我需要加载一个存储在数据库的通讯录列表,我可以这样写

通讯录中每条记录仅id,姓名和年龄

public class Person{    //指定主键,并且自动增长    @Database(keyPrimary = true,autoincrement = true)    public int id;    public int age;    public String name;}

每条通讯录记录的布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="vertical"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:background="?attr/selectableItemBackground"    android:padding="10dp">    <TextView        android:id="@+id/id"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="15sp"        android:text="id"/>    <TextView        android:id="@+id/name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        android:text="name"/>    <TextView        android:id="@+id/age"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        android:text="age"/></LinearLayout>

通讯录适配器,仅显示它的3个属性

/** * 通讯录适配器 */public class PersonDbAdapter extends DatabaseAdapter<Person>{    public PersonDbAdapter(Context context){        super(context,Person.class,R.layout.item);    }    @Override    protected void binding(int position, Person data, OldViewHolder holder){        holder.setText(R.id.name,data.name);        holder.setText(R.id.id,Integer.toString(data.id));        holder.setText(R.id.age,Integer.toString(data.age));    }}

主界面布局。我额外加了一个排序的按键

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <Button        android:id="@+id/sort"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="正序"/>    <com.fastlib.widget.RefreshLayout        android:id="@+id/refresh"        android:layout_width="match_parent"        android:layout_height="match_parent">        <ListView            android:id="@+id/list"            android:layout_width="match_parent"            android:layout_height="match_parent"/>    </com.fastlib.widget.RefreshLayout></LinearLayout>

主界面代码

public class MainActivity extends FastActivity{    @Bind(R.id.refresh)    Refreshable mRefresh;    @Bind(R.id.list)    ListView mList;    PersonDbAdapter mAdapter;    boolean isAsc=true;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState){        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    @Bind(R.id.sort)    public void commit(View v){        isAsc=!isAsc;        ((TextView)v).setText(isAsc?"正序":"倒序");        mAdapter.setAsc(isAsc);        mAdapter.refresh();    }    private void init(){        mAdapter=new PersonDbAdapter(this);        mList.setAdapter(mAdapter);        mAdapter.setRefreshable(mRefresh);        mRefresh.setRefreshCallback(new Refreshable.RefreshCallback(){            @Override            public void startRefresh(){                mAdapter.refresh();            }        });    }}

如有疑问,请在下方评论,我会尽可能及时回复

0 0
原创粉丝点击