android自定义分页组件
来源:互联网 发布:python简明教程中文 编辑:程序博客网 时间:2024/06/06 02:38
组件代码如下:
Activity布局如下:
public class PageControl extends LinearLayout implements OnClickListener{private ImageButton firstImg;private ImageButton preImg;private ImageButton nextImg;private ImageButton endImg;private TextView totalPageText;private TextView curPageText;private int numPerPage=10;private int curPage=1;private int count=0;private OnPageChangeListener pageChangeListener; public PageControl(Context context) {super(context);initPageComposite(context);}public PageControl(Context context, AttributeSet attrs) {super(context, attrs);initPageComposite(context);}public PageControl(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);initPageComposite(context);}private void initPageComposite(Context context){this.setPadding(5,5,5,5);firstImg=new ImageButton(context);firstImg.setId(1);firstImg.setImageResource(R.drawable.firstpage);firstImg.setPadding(0,0,0,0);LayoutParams layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);layoutParam.setMargins(0,0,5,0);firstImg.setLayoutParams(layoutParam);firstImg.setOnClickListener(this);this.addView(firstImg);preImg=new ImageButton(context);preImg.setId(2);preImg.setImageResource(R.drawable.prepage);preImg.setPadding(0,0,0,0);layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);layoutParam.setMargins(0,0,5,0);preImg.setLayoutParams(layoutParam);preImg.setOnClickListener(this);this.addView(preImg);nextImg=new ImageButton(context);nextImg.setId(3);nextImg.setImageResource(R.drawable.nextpage);nextImg.setPadding(0,0,0,0);layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);layoutParam.setMargins(0,0,5,0);nextImg.setLayoutParams(layoutParam);nextImg.setOnClickListener(this);this.addView(nextImg);endImg=new ImageButton(context);endImg.setId(4);endImg.setImageResource(R.drawable.lastpage);endImg.setPadding(0,0,0,0);layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);layoutParam.setMargins(0,0,5,0);endImg.setLayoutParams(layoutParam);endImg.setOnClickListener(this);this.addView(endImg);totalPageText=new TextView(context);layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT);layoutParam.setMargins(5,0,5,0);totalPageText.setLayoutParams(layoutParam);totalPageText.setText("总页数");this.addView(totalPageText);curPageText=new TextView(context);layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT);layoutParam.setMargins(5,0,5,0);curPageText.setLayoutParams(layoutParam);curPageText.setText("当前页");this.addView(curPageText);}/** * 初始化分页组件的显示状态 * @param newCount */public void initPageShow(int newCount){count=newCount;int totalPage=count%numPerPage==0?count/numPerPage:count/numPerPage+1;curPage=1;firstImg.setEnabled(false);preImg.setEnabled(false);if(totalPage<=1){endImg.setEnabled(false);nextImg.setEnabled(false);}else{endImg.setEnabled(true);nextImg.setEnabled(true);}totalPageText.setText("总页数 "+totalPage);curPageText.setText("当前页 "+curPage);}/** * 分页按钮被点击时更新状态,该方法要在initPageShow后调用 */@Overridepublic void onClick(View view) {if(pageChangeListener==null){return;}int totalPage=count%numPerPage==0?count/numPerPage:count/numPerPage+1;switch(view.getId()){case 1:curPage=1;firstImg.setEnabled(false);preImg.setEnabled(false);if(totalPage>1){nextImg.setEnabled(true);endImg.setEnabled(true);}break;case 2:curPage--;if(curPage==1){firstImg.setEnabled(false);preImg.setEnabled(false);}if(totalPage>1){nextImg.setEnabled(true);endImg.setEnabled(true);}break;case 3:curPage++;if(curPage==totalPage){nextImg.setEnabled(false);endImg.setEnabled(false);}firstImg.setEnabled(true);preImg.setEnabled(true);break;case 4:curPage=totalPage;nextImg.setEnabled(false);endImg.setEnabled(false);firstImg.setEnabled(true);preImg.setEnabled(true);break;default:break;}totalPageText.setText("总页数 "+totalPage);curPageText.setText("当前页 "+curPage);pageChangeListener.pageChanged(curPage,numPerPage);}public OnPageChangeListener getPageChangeListener() {return pageChangeListener;}/** * 设置分页监听事件 * @param pageChangeListener */public void setPageChangeListener(OnPageChangeListener pageChangeListener) {this.pageChangeListener = pageChangeListener;}}分页监听器代码:
/** * 分页监听事件 */public interface OnPageChangeListener {/** * 点击分页按钮时触发此操作 * @param curPage 当前页 * @param numPerPage 每页显示个数 */public void pageChanged(int curPage,int numPerPage);}使用示例:实现ListView分页效果
Activity布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/wordList" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="11" > </ListView> <org.chen.wordreview.control.PageControl android:id="@+id/wordListPageControl" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/></LinearLayout>Activity实现:
//实现分页监听接口public class MainActivity extends Activity implements OnPageChangeListener{private WordDao wordDao;private ListView wordListView;private ArrayAdapter<Word> adapter;private PageControl pageControl; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wordlist); ... //初始化分页组件 pageControl=(PageControl) findViewById(R.id.wordListPageControl); pageControl.setPageChangeListener(this); pageControl.initPageShow(wordDao.getCount()); ... } /** * 点击分页按钮时触发该方法的执行 * @param curPage 当前页 * @param numPerPage 每页显示记录数 */@Overridepublic void pageChanged(int curPage, int numPerPage) {List<Word> words=wordDao.findOnePage((curPage-1)*numPerPage,numPerPage);adapter.clear();adapter.addAll(words);adapter.notifyDataSetChanged();}}分页效果图
- android自定义分页组件
- Android 自定义分页组件
- Android 自定义分页组件
- Flex4自定义分页组件
- Flex4自定义分页组件
- flex4 自定义分页组件
- extjs_09_自定义分页组件
- Angular2自定义分页组件
- 自定义分页组件DATAGRID-DataTable
- 自定义分页组件DATAGRID-SQL
- 自定义JSF通用分页组件
- 【Android】Android自定义组件
- RichFaces JSF自定义分页组件(简洁版)
- 自定义android RadioPreference组件
- android自定义组件
- Android自定义组件
- Android自定义Button组件
- Android-构造自定义组件
- 进程的虚拟地址空间,堆栈、堆、数据段、代码段
- Injecting Code Into Privileged Win32 Processes
- 二维数组和指针
- 一个简单的查找外键 以及外键的表名、列名、引用的主表名及列名语句
- DWR 学习笔记(一)
- android自定义分页组件
- Shell 学习(三、vi变量和数值运算,父shell和子shell)
- oracle ebs 业务会计分录详释
- zoj3659
- Fielload 自己调试 源码 -->调bug能力搞定
- List 中使用 MXML 自定义组件的数据项访问方法
- 软件开发团队中各个成员的英文简称, 收录早晚会用到.
- 华为面试题:1分2分5分的硬币,组成1角,共有多少种组合。 Java源代码
- Shell 学习(四、条件测试(test,[]) 和 条件判断(if..then..fi))