当前位置: 首页 > news >正文

图书馆网站开发策划书磁力搜索神器

图书馆网站开发策划书,磁力搜索神器,b2b网站如何做社群运营,海外网络推广厂家上一节我们已经写好了自定义的view并且成功运行了,这一节我们把数据绑定进自定义的view 首先我们给自定义view中的几个控件设定好id并且在自定义的java类中进行声明和绑定 package com.example.viewpager.views;import android.content.Context;import android.uti…

上一节我们已经写好了自定义的view并且成功运行了,这一节我们把数据绑定进自定义的view

首先我们给自定义view中的几个控件设定好id并且在自定义的java类中进行声明和绑定

    package com.example.viewpager.views;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.widget.LinearLayout;import android.widget.TextView;import androidx.annotation.Nullable;import androidx.viewpager.widget.ViewPager;import com.example.viewpager.R;public class LooperPager extends LinearLayout {private ViewPager viewPager;private TextView textView;private LinearLayout linearLayout;public LooperPager(Context context) {this(context,null);}public LooperPager(Context context, @Nullable AttributeSet attrs) {this(context,attrs,0);}/*** java必须有一个声明super的构造器,而且必须在开头,所以其他构造器声明的this,、* 所以无论使用其他哪个构造器都必须要调用该构造器* @param context* @param attrs* @param defStyleAttr*/public LooperPager(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);//自定义布局绑定当前类,this:当前类,ture:确定绑定LayoutInflater.from(context).inflate(R.layout.looper_pager,this,true);inti();}/****/private void inti() {intiView();}/*** 设置数据的方法*/public void setData(){}/*** 加载view的方法*/private void intiView() {viewPager = findViewById(R.id.viewPager);textView = findViewById(R.id.looper_title_tv);linearLayout = findViewById(R.id.looper_point_container_lv);}}

绑定好之后就是设置数据的方法

首先是设置标题的方法,我们给ViewPager写一个监听,三个状态:滑动中,停止和状态改变,我们在监听停止状态的方法内获得标题,用一个自制的强制获得String类型的接口的实例来获得当前停止状态下页面的标题来作为标题(有点绕哈)。

然后是设置ViewPager,这里我们直接让外部填一个适配器类型的数据就行,就能设置ViewPager的数据了

    package com.example.viewpager.views;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.widget.LinearLayout;import android.widget.TextView;import androidx.annotation.Nullable;import androidx.viewpager.widget.PagerAdapter;import androidx.viewpager.widget.ViewPager;import com.example.viewpager.R;public class LooperPager extends LinearLayout {private ViewPager viewPager;private TextView textView;private LinearLayout linearLayout;private BindTitleLisener bindTitleLisener = null;//标题,先设为空public LooperPager(Context context) {this(context,null);}public LooperPager(Context context, @Nullable AttributeSet attrs) {this(context,attrs,0);}/*** java必须有一个声明super的构造器,而且必须在开头,所以其他构造器声明的this,、* 所以无论使用其他哪个构造器都必须要调用该构造器* @param context* @param attrs* @param defStyleAttr*/public LooperPager(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);//自定义布局绑定当前类,this:当前类,ture:确定绑定LayoutInflater.from(context).inflate(R.layout.looper_pager,this,true);inti();}/****/private void inti() {intiView();initEven();}/*** 对页面进行滑动监听的方法*/private void initEven() {viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Override//切换的回调方法public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Override//切换停止的回调方法public void onPageSelected(int position) {//当页面切换停止后获得标题//如果标题不是空的,就设定标题为当前停止的页面标题里的数据if (bindTitleLisener != null){textView.setText(bindTitleLisener.getTitle(position));}}@Override//状态改变的回调方法public void onPageScrollStateChanged(int state) {}});}/*** 获得标题的接口,里面有一个获得标题的抽象方法*/public interface BindTitleLisener{String getTitle(int position);}/*** 设置数据的方法*/public void setData(PagerAdapter adapter,BindTitleLisener lisener){bindTitleLisener = lisener;viewPager.setAdapter(adapter);}/*** 加载view的方法*/private void intiView() {viewPager = findViewById(R.id.viewPager);textView = findViewById(R.id.looper_title_tv);linearLayout = findViewById(R.id.looper_point_container_lv);}}

下一步就是在主页面进行设置数据,首先是把我们自定义view类的实例化绑定主页面内的自定义view,当然设置数据就不和ViewPager设置数据一样了,我们需要用我们自定义view的java类里面自己写的设置数据的方法,然后把两个形参    “设置ViewPager的适配器”  和   “获得标题的接口实例”填进去

package com.example.viewpager;import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;import com.example.viewpager.views.LooperPager;public class supper_MainActivity extends AppCompatActivity {private LooperPager looperPager;@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.supper_activity_main);intiView();}private void intiView() {//绑定布局looperPager = findViewById(R.id.Looperpager);//设置数据looperPager.setData(new PagerAdapter() {@Overridepublic int getCount() {return 0;}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return false;}}, new LooperPager.BindTitleLisener() {@Overridepublic String getTitle(int position) {return null;}});}
}

下一步把图片数据设置进去,这里我们先创建一个Java类用来当做容器,这个类有两个属性,string类型的标题和integer类型的地址,然后构造器和get set都写上

package com.example.viewpager.views;public class PagerItem {private String title;//标题private Integer  picResId; //图片地址public PagerItem() {}public PagerItem(String title, Integer picResId) {this.title = title;this.picResId = picResId;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public Integer getPicResId() {return picResId;}public void setPicResId(Integer picResId) {this.picResId = picResId;}
}

然后在主页面声明一个泛型为这个容器的集合,接着把图片和标题填入集合。最后就是把我们的集合放进ViewPager的适配器里面和后面的获得标题的方法里面来获得各种数据,

package com.example.viewpager;import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;import com.example.viewpager.views.LooperPager;
import com.example.viewpager.views.PagerItem;import java.util.ArrayList;
import java.util.List;public class supper_MainActivity extends AppCompatActivity {private LooperPager looperPager;private List<PagerItem> list = new ArrayList<>();@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.supper_activity_main);intiData();//这里数据填充要写在加载组件上面,如果写在下面,需要在方法内部写上刷新数据的方法intiView();//加载组件的方法}/*** 填充数据*/private void intiData(){list.add(new PagerItem("第一张图片",R.mipmap.img1));list.add(new PagerItem("第二张图片",R.mipmap.mig2));list.add(new PagerItem("第三张图片",R.mipmap.mig3));list.add(new PagerItem("第四张图片",R.mipmap.mig4));}private void intiView() {//绑定布局looperPager = findViewById(R.id.Looperpager);//设置数据looperPager.setData(new PagerAdapter() {@Overridepublic int getCount() {return list.size();}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view == object;}/*** 初始化* @param container* @param position* @return*/@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {//绑定布局View item = LayoutInflater.from(container.getContext()).inflate(R.layout.item,container,false);//设置数据ImageView imageView = item.findViewById(R.id.imageView);//先把imageview绑定int realPosition = position % list.size();imageView.setImageResource(list.get(realPosition).getPicResId());//然后在imageview中填入集合中的图片数据if (imageView.getParent() instanceof  ViewGroup){((ViewGroup) imageView.getParent()).removeView(imageView);}//不添加这行代码会报错,改子类已经拥有一个父类,这里我们判断如果父类是group就在父类中删除,// 如果不是就直接添加进pager里面container.addView(imageView);return imageView;}/*** 销毁* 作用是达到循环使用,不会导致溢出* @param container* @param position* @param object*/@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {//删除数据container.removeView((View) object);}}, new LooperPager.BindTitleLisener() {@Override//获得当前位置图片的标题public String getTitle(int position) {return list.get(position).getTitle();}});}
}

最终效果会随着图片的滑动上面的标题随之改变 

 这一节里我们创建了一个自定义控件的类,我们只有一个需要向外部要数据的方法,就是setData,我们向外部要两个数据,一个是一个适配器,用来给ViewPager填充数据,一个是自定义的接口用来给标题填充数据

下一节我们再对节的代码进行下一步优化

http://www.lbrq.cn/news/2579077.html

相关文章:

  • 潍坊做网站张家口网络营销策划的方法
  • 崇明做网站公司公司在百度怎么推广
  • 品划做网站域名信息查询
  • php做心理测试网站电子技术培训机构
  • 百度优化 几个网站内容一样app下载推广平台
  • 网站做sem优化电脑培训网
  • 专做智能化施工的网站百度检索入口
  • 网站开发文档步骤应该怎么写中国移动有免费的视频app
  • 溧阳网站建设公司网站模板及源码
  • wordpress插件影响网站南京网站制作公司
  • 确定网站设计公司简报南宁百度推广排名优化
  • wordpress站点安装谷歌建站
  • 苏州和城乡建设局网站网站是怎么优化推广的
  • 网站建设 ppt全专业优化公司
  • 网站站点风格官网排名优化方案
  • 网站上资源截图怎么做视频网站搭建
  • 怎么做短文网站seo刷词
  • 今日头条在线观看谷歌seo推广公司
  • 网站建设大作业现场直播的视频
  • 日本人性剧情片电影内蒙古seo优化
  • 一家做公司点评网站网络营销推广案例
  • 做旅游网站一年能挣多少营业推广的方式
  • 域名免费注册网站seo网上培训多少钱
  • 做网站的公司北京有哪些网站seo置顶 乐云践新专家
  • 外国的贸易网站免费的推广网站
  • 网站建设关于公司怎么写技能培训班
  • 网站建设教程下载安卓优化大师破解版
  • 巨腾外贸网站建设seo短视频网页入口引流
  • 全网营销网站怎么做今天的新闻
  • 郑州网站制作公司莱芜seo
  • 苍穹外卖项目学习——day1(项目概述、环境搭建)
  • JavaWeb学习------SpringCloud入门
  • CCF-GESP 等级考试 2025年6月认证C++一级真题解析
  • Jupyter Notebook 中高效处理和实时展示来自 OpenCV 和 Pillow 的图像数据探究
  • 使用AndroidStudio调试Framework源码
  • RAG-Semantic Chunking