电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

android實現滑動標簽頁效果的代碼解析

瀏覽:88日期:2022-09-24 13:36:01

實現效果:

android實現滑動標簽頁效果的代碼解析

實現功能:

ViewPager+Fragment實現加載界面 SQLite數據獲取并顯示到ListView上 ListView的item監聽并攜帶數據跳轉到其他界面 使用SharedPreference存儲部分測試數據

實現過程:

各方法和變量的作用請詳見代碼注釋。

listview的數據顯示請見Android Studio獲取SQLite數據并顯示到ListView上Fragment+ViewParger實現界面加載首先要創建兩個類并繼承Fragment,在viewpager中實現顯示時使用。

public class RiderInfo_Fragment extends Fragment { List<Map<String, Object>> listitem = new ArrayList<Map<String, Object>>(); //存儲數據的數組列表---里面的數據將顯示在ListView中 ListView listView = null; List<Info> infoList = new ArrayList<>(); //從SQLite中獲得的數據將存儲在改集合中-------info是bean類 @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.rider_info_fragment, null); listView = (ListView) view.findViewById(R.id.showRiderInfo); //綁定Listview getRiderHistoryInfoFromSQite(getActivity(), infoList); //該方法用于從SQLite中獲取數據,參數二 infoList會存儲獲得數據 getDataFromInfoList(); //將list中的數據添加到map集合中 initListData(); return view; } private void getDataFromInfoList() { for (int i = 0; i < infoList.size(); i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put('name', infoList.get(i).getUsername()); map.put('address', 'f'); map.put('price', '444'); map.put('objectID', infoList.get(i).objectIds); listitem.add(map); } } private void initListData() { SimpleAdapter adapter = new SimpleAdapter(getActivity() , listitem , R.layout.rider_info_fragment_item , new String[]{'name', 'address', 'price', 'objectID'} , new int[]{R.id.time, R.id.address, R.id.price, R.id.objectID}); // 第一個參數是上下文對象 // 第二個是listitem------數據加載 // 第三個是指定每個列表項的布局文件 // 第四個是指定Map對象中定義的兩個鍵(這里通過字符串數組來指定) // 第五個是用于指定在布局文件中定義的id(也是用數組來指定) adapter.setViewBinder(new SimpleAdapter.ViewBinder() { //通過實現ViewBinder()這個接口,在里面定義數據和視圖的匹配關系 ---加載圖片 Bitmap類型(默認是使用R.id.---) @Override public boolean setViewValue(View view, Object data, String textRepresentation) { if ((view instanceof ImageView) & (data instanceof Bitmap)) { ImageView iv = (ImageView) view; Bitmap bm = (Bitmap) data; iv.setImageBitmap(bm); return true; } return false; } }); listView.setAdapter(adapter); //監聽item項并攜帶數據跳轉到另一個界面 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { ListView listView = (ListView) adapterView; HashMap<String, String> map = (HashMap<String, String>) listView.getItemAtPosition(i); Intent intent = new Intent(getActivity(), RiderInfoManager.class); Bundle bundle = new Bundle(); bundle.putString('objectid', map.get('objectID')); intent.putExtras(bundle); startActivity(intent); } }); }

另一個類的創建過程類似。3.創建 mainactivity.java用于設置在Viewpager中顯示Fragment

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private ViewPager vp; CustomerInfo_Fragment customerInfo_fragment; RiderInfo_Fragment riderInfo_fragment; private List<Fragment> mFragmentList = new ArrayList<Fragment>(); FragmentAdapter mFragmentAdapter; TextView custome, rider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); mFragmentAdapter = new FragmentAdapter(this.getSupportFragmentManager(), mFragmentList); vp.setOffscreenPageLimit(2);//ViewPager的緩存為2幀 vp.setAdapter(mFragmentAdapter); vp.setCurrentItem(0);//初始設置ViewPager選中第一幀 //ViewPager的監聽事件 vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { /*此方法在頁面被選中時調用*/ //title.setText(titles[position]); changeTextColor(position); } @Override public void onPageScrollStateChanged(int state) { /*此方法是在狀態改變的時候調用,其中arg0這個參數有三種狀態(0,1,2)。 arg0==1的時辰默示正在滑動, arg0==2的時辰默示滑動完畢了, arg0==0的時辰默示什么都沒做。*/ } }); } void initView() { custome = findViewById(R.id.customer); rider = findViewById(R.id.rider); custome.setOnClickListener(this); rider.setOnClickListener(this); vp = (ViewPager) findViewById(R.id.mainViewPager); customerInfo_fragment = new CustomerInfo_Fragment(); riderInfo_fragment = new RiderInfo_Fragment(); mFragmentList.add(customerInfo_fragment); mFragmentList.add(riderInfo_fragment); }@Override public void onClick(View view) { //用于判斷當前為哪一個fragment int i = view.getId(); if (i == R.id.customer) { vp.setCurrentItem(0, true); } else if (i == R.id.rider) { vp.setCurrentItem(1, true); } } public class FragmentAdapter extends FragmentPagerAdapter { List<Fragment> fragmentList = new ArrayList<Fragment>(); public FragmentAdapter(android.support.v4.app.FragmentManager fm, List<Fragment> fragmentList) { super(fm); this.fragmentList = fragmentList; } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } }

該方法用于具體執行數據庫數據查詢

public static void getRiderHistoryInfoFromSQite(Activity activity, List<Info> infoList) { DBOpenHelper helper = new DBOpenHelper(activity, 'qianbao.db', null, 1); SQLiteDatabase db = helper.getWritableDatabase(); Cursor c = db.query('RiderHistoryInfo', null, null, null, null, null, null); if (c != null && c.getCount() >= 1) { while (c.moveToNext()) { //moveToNext是指向表中的下一行數據 infoList.add(new Info(c.getString(c.getColumnIndex('userName')), c.getString(c.getColumnIndex('userPhone')), c.getString(c.getColumnIndex('price')), c.getString(c.getColumnIndex('address')), c.getString(c.getColumnIndex('createTime')), c.getString(c.getColumnIndex('objectId')),'')); } c.close(); db.close(); } }

實現過程中的主要代碼就是這么多,實現過程比較簡單僅供參考。

完整Demo下載(免費)

到此這篇關于android實現滑動標簽頁效果的代碼解析的文章就介紹到這了,更多相關android 滑動標簽頁內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 云杂志网-学术期刊-首页 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | 劳动法网-专业的劳动法和劳动争议仲裁服务网| 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | 耐酸泵,耐酸泵厂家-淄博华舜耐腐蚀真空泵 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 连栋温室大棚建造厂家-智能玻璃温室-薄膜温室_青州市亿诚农业科技 | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | 进口消泡剂-道康宁消泡剂-陶氏消泡剂-大洋消泡剂 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 炉门刀边腹板,焦化设备配件,焦化焦炉设备_沧州瑞创机械制造有限公司 | 阜阳在线-阜阳综合门户| 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 | 高压包-点火器-高压发生器-点火变压器-江苏天网| 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 全自动固相萃取仪_高通量真空平行浓缩仪-勤业永为 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 深圳活动策划公司|庆典策划|专业公关活动策划|深圳艺典文化传媒 重庆中专|职高|技校招生-重庆中专招生网 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 成都治疗尖锐湿疣比较好的医院-成都治疗尖锐湿疣那家医院好-成都西南皮肤病医院 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 微型实验室真空泵-无油干式真空泵-微型涡旋耐腐蚀压缩机-思科涡旋科技(杭州)有限公司 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | ?水马注水围挡_塑料注水围挡_防撞桶-常州瑞轩水马注水围挡有限公司 | 视频直播 -摄影摄像-视频拍摄-直播分发 | LNG鹤管_内浮盘价格,上装鹤管,装车撬厂家-连云港赛威特机械 | 钢制暖气片散热器_天津钢制暖气片_卡麦罗散热器厂家 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 2025福建平潭岛旅游攻略|蓝眼泪,景点,住宿攻略-趣平潭网 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 |