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(); } }); } }
如有疑问,请在下方评论,我会尽可能及时回复