android ViewPager实现App主界面Tab菜单页面切换和点击事件
首先需要创建3个.xml文件,简单设置背景和一些简单组件,tab1.xml,tab2.xml,tab3.xml
之后是对activity_main.xml的设置
《?xml version="1.0" encoding="utf-8"?》
《LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EEEEEE"
android:orientation="vertical" 》
《LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical" 》
《android.support.v4.view.ViewPager
android:id="@+id/viewpage"
android:layout_width="match_parent"
android:layout_height="fill_parent" /》
《/LinearLayout》
《LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="40.0dip"
android:background="#EEEEEE" 》
《!--设置最下端的标题提示 --》
《TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:gravity="center"
android:text="标题1"
android:textColor="#000000"
android:textSize="18.0dip" /》
《TextView
android:id="@+id/text2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:gravity="center"
android:text="标题2"
android:textColor="#000000"
android:textSize="18.0dip" /》
《TextView
android:id="@+id/text3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:gravity="center"
android:text="标题3"
android:textColor="#000000"
android:textSize="18.0dip" /》
《/LinearLayout》
《/LinearLayout》
最关键的activity_main.java的设置:
public class MainActivity extends Activity implements
OnClickListener {
Context context = null;
ViewPager pager = null;
TextView t1, t2, t3;
View view1, view2, view3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = MainActivity.this;
initTextView();
initPagerViewer();
}
private void initTextView()
{
t1 = (TextView) findViewById(R.id.text1);
t2 = (TextView) findViewById(R.id.text2);
t3 = (TextView) findViewById(R.id.text3);
t1.setOnClickListener(this);
t2.setOnClickListener(this);
t3.setOnClickListener(this);
}
private void
initPagerViewer() {
pager = (ViewPager) findViewById(R.id.viewpage);
LayoutInflater li = LayoutInflater.from(this);
final ArrayList《View》 list = new ArrayList《View》();
view1 = li.inflate(R.layout.tab1, null);
view2 = li.inflate(R.layout.tab2, null);
view3 = li.inflate(R.layout.tab3, null);
list.add(view1);
list.add(view2);
list.add(view3);
pager.setAdapter(new MyPagerAdapter(list));
pager.setCurrentItem(0);
pager.setOnPageChangeListener(new MyOnPageChangeListener());
}
public class MyPagerAdapter
extends PagerAdapter {
List《View》 list = new ArrayList《View》();
public MyPagerAdapter(ArrayList《View》 list) {
this.list = list;
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {// 销毁view
ViewPager pViewPager = ((ViewPager) container);
pViewPager.removeView(list.get(position));
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object instantiateItem(View arg0, int arg1) { //
初始化Item
// 通过位置arg1拿到view
ViewPager pViewPager = ((ViewPager) arg0);
pViewPager.addView(list.get(arg1));
return list.get(arg1);
}
}
public class MyOnPageChangeListener implements
OnPageChangeListener {
@Override
public void onPageSelected(int arg0) {//通过view 的位置来更改按钮的text
resert();
int currentItems = pager.getCurrentItem();
switch (currentItems) {
case 0:t1.setText("选中");break;
case 1:t2.setText("选中");break;
case 2:t3.setText("选中");break;
default:break;}}
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2)
{}}
@Override
public void onClick(View v) {
resert();
// TODO Auto-generated method stub
switch (v.getId()) {case
R.id.text1:
pager.setCurrentItem(0);t1.setText("选中");break;
case R.id.text2:pager.setCurrentItem(1);t2.setText("选中");break;
case R.id.text3:pager.setCurrentItem(2);t3.setText("选中");break;}}
//初始化按钮的选中情况
public void resert()
{t1.setText("标题1");t2.setText("标题2");t3.setText("标题3");}}
分页查询的实现:
创建一个user类,包括3个属性,创建简单的连接数据库的类。创建接口userMag,并通过userMagImpl实现:
public List getUser (String s){
Connection ct = null;
Statement sm = null;
ResultSet rs = null;
List users = new ArrayList();
try{ct = DBOperator.getConnection();
sm =
ct.createStatement();
int pageNow = 1;
if (s != null) {
pageNow =
Integer.parseInt(s);
}
int pageSize = 3;//每页显示几条记录
rs = sm.executeQuery("select *
from user limit "+ ((pageNow -
1) * pageSize) +","+pageSize+"");
while (rs.next()) {
User u =
new User();
u.setUserid(rs.getString(1));
u.setPassword(rs.getString(2));
u.setUsername(rs.getString(3));
users.add(u);
}
}catch(Exception
ex){
ex.printStackTrace();
}finally{
DBOperator.close(rs, sm, ct);}
return users;
}
@Override
public int getPage(String s) {
Connection ct = null;
Statement sm = null;
ResultSet rs = null;
//查询总页数
int pageCount = 0;//当前为第几页
int pageSize = 3;//每页显示几条记录
int rowCount = 0;//总共有多少条记录
try{ct =
DBOperator.getConnection();
sm =
ct.createStatement();
rs = sm.executeQuery("select
count(*) from user");
if (rs.next()) {
rowCount = rs.getInt(1);
if (rowCount % pageSize == 0) {
pageCount =
rowCount / pageSize;
} else {
pageCount =
rowCount / pageSize + 1;}}}catch(Exception
ex)
{ex.printStackTrace();
}finally
{DBOperator.close(rs, sm,
ct);}
return pageCount;}
关于jsp页面的设置:
其中的TransServlet是为了实现跳转的功能:
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("transpage");
if(id != null)
{
request.getRequestDispatcher("/index.jsp?pageNow="+id).forward(request,
response);
}
}