无法修改ViewPager的值,不知道为什么

qq_40844810 2017-11-12 01:29:37
# 写了一个小程序,ViewPager可以正常滚动,但死活改变不了View里面的值
## 希望有大神可以教教我怎么做,我都困在这困了一天了,还是找不到解决方案
下面附上代码,其他几个xml文件只有一个小空间

```
package com.example.msi.lostfinder;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;


import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

private ListView listLost;
private String[] names = {"水杯", "手机", "钥匙", "USB线", "书籍", "饰品", "USB线", "U盘"};
private int[] icons = {R.drawable.cup, R.drawable.phone, R.drawable.key, R.drawable.xian, R.drawable.cidian,
R.drawable.wallet_woman, R.drawable.xian, R.drawable.upan};
private View listview,history,map,user;
private Button btn;
private List<View> viewList;
private ViewPager root;

//底部菜单栏各个菜单项的点击事件处理
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_LostFinder://失物招领
root.setCurrentItem(0);
return true;
case R.id.navigation_History://历史信息
root.setCurrentItem(1);
return true;
case R.id.navigation_Map://地图
root.setCurrentItem(2);
return true;
case R.id.navigation_User://用户信息
root.setCurrentItem(3);
return true;
}
return false;
}

};
public void init(){
LayoutInflater inflater = getLayoutInflater();

listLost = inflater.inflate(R.layout.lost_items,null).findViewById(R.id.lost_item);
MyBaseAdapter mAdapter = new MyBaseAdapter(this,names,icons);
listLost.setAdapter(mAdapter);
btn=inflater.inflate(R.layout.map,null).findViewById(R.id.button2);
btn.setText("我能够动!");

}
@Override
protected void onCreate(Bundle savedInstanceState) {

try{

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
/*设置参数*/
root = (ViewPager) findViewById(R.id.content);
LayoutInflater inflater = getLayoutInflater();
listview = inflater.inflate(R.layout.lost_items, null);
history = inflater.inflate(R.layout.history, null);
map = inflater.inflate(R.layout.map, null);
user = inflater.inflate(R.layout.user, null);



LayoutInflater layout=this.getLayoutInflater();
View view=layout.inflate(R.layout.map, null);
Button b=view.findViewById(R.id.button2);
b.setText("我能动");
TextView textview = (TextView) LayoutInflater.from(MainActivity.this).inflate(R.layout.history
, null).findViewById(R.id.textView);
textview.setText("能改");


/*将要分页显示的View装入数组中*/
viewList = new ArrayList<>();
viewList.add(listview);
viewList.add(history);
viewList.add(map);
viewList.add(user);


root.setAdapter(pagerAdapter);
root.setCurrentItem(0);

BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}
catch(Exception ex){
ex.printStackTrace();
}
}
public PagerAdapter pagerAdapter = new PagerAdapter() {

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
//根据传来的key,找到view,判断与传来的参数View arg0是不是同一个视图
return arg0 == arg1;
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return viewList.size();
}

@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
// TODO Auto-generated method stub
container.removeView(viewList.get(position));
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(viewList.get(position));

//把当前新增视图的位置(position)作为Key传过去
return viewList.get(position);
}

};

}

```


尝试了textview以及button都没有用,哎,心累
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40844810 2017-11-12
  • 打赏
  • 举报
回复
引用 1 楼 YXTS122的回复:
要不你把项目发到我邮箱1444089871@qq.com,我运行看看。。。。。。。。。
好的。。。。。。。。。。。
YXTS122 2017-11-12
  • 打赏
  • 举报
回复
要不你把项目发到我邮箱1444089871@qq.com,我运行看看。。。。。。。。。
parallaxviewpager是一个具有视差滚动效果的ViewPager。所谓视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验。parallaxviewpager通过设置一个背景图片,使原有的ViewPager页面与这个背景图片间实现视差效果。这就要求你的背景图片的高宽比要大于屏幕的高宽比。效果非常不错。项目地址:https://github.com/andraskindler/parallaxviewpager 效果图:如何使用:parallaxviewpager是扩展了ViewPager,所有基本使用二者是相同的。在xml中布局中创建ParallaxViewPagerviewpager.ParallaxViewPager          android:id="@ id/viewPager"          android:layout_width="match_parent"          android:layout_height="match_parent"/>2. 创建了ParallaxViewPager之后,可以使用下面的方法来设置背景,或者也可以xml设置:1) setBackgroundResource(int resid)2) setBackground(Drawable background) or setBackgroundDrawable(Drawable background)3) setBackground(Bitmap bitmap)这就好了,你现在可以使用ParallaxViewPager的全部功能了。你可以修改背景的滚动效果来优化用户体验。你也可以使用setScaleType(final int scaleType)方法来配置视图的图像缩放方式。这个方法只能和FIT_HEIGHT搭配使用,从下面的参数中进行选择:FIT_HEIGHT表示缩放图像的高度以便适配视图的高度,同时缩放图像的宽度以便保持宽高比。bitmap的不可见部分被划分成相同的区域,每个区域插入到合适的位置。FIT_HEIGHT是默认。FIT_WIDTH表示背景图像的宽度被划分成相同的块,每一块占满整个屏幕的宽度。这个模式不适用于视差效果,因为背景和视图的滚动速度一样。你也可以使用setOverlapPercentage(final float percentage) 方法来设置重叠的程度。重叠程度介于0到1之间,这个越小背景就滚动地越慢,默认是50%。ParallaxViewPageviewPager = (ParallaxViewPager)this.findViewById(R.id.viewPager); viewPager.setBackgroundResource(R.drawable.bg); viewPager.setOverlapPercentage(0.75f); PageAdapter adapter = new PageAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter);项目作者并没有提供demo,完整实例可点击上面的"下载源码"获得。
现在的APP Banner大多数千篇一律,前几天看到魅族手机上所有魅族自家APP上的Banner效果不错,于是就想着来仿着做一个类似的效果。因此就有了这个库。但是为了使用方便,这个库不仅仅只有仿魅族效果的BannerView 来使用,还可以当作普通的BannerView 来使用,还可以当作一个ViewPager 来使用。使用很方便,具体使用方法和API 请看后面的示例。 ---  左图为魅族APP上的Banner效果,右图是高仿效果。MZBannerView 有以下功能:1 . 仿魅族BannerView 效果。2 . 当普通Banner 使用3 . 当普通ViewPager 使用。4 . 当普通ViewPager使用(有魅族Banner效果)5 . 仿某视频网站Banner效果。Demo APKgif图片有点模糊,可以扫描下方二维码下载APK体验相关博客ViewPager系列之 仿魅族应用的广告BannerView更新日志v1.1.1 : 增加按住Banner 停止轮播,松开开始自动轮播的功能v1.1.0 : fix 在从网上获取数据后,banner 显示 造成 ANR 的bug(如果在onCreate()中设置资源显示则没问题)v1.1.2 : fix 更改数据之后,调用setPages重新刷新数据会crush的bugv2.0.0 :1,add: 添加仿魅族Banner效果,中间Page覆盖两边。 -- 2,fix 部分bug: 添加OnPageChangeListener 回调 pisition 不对的bug.DependencyAdd it in your root build.gradle at the end of repositories:allprojects {      repositories {           ...           maven { url 'https://jitpack.io' }      } }Step 2. Add the dependencydependencies {          compile 'com.github.pinguo-zhouwei:MZBannerView:v2.0.0' }自定义属性属性名属性意义取open_mz_mode是否开启魅族模式true 为魅族Banner效果,false 则普通Banner效果canLoop是否轮播true 轮播,false 则为普通ViewPagerindicatorPaddingLeft设置指示器距离左侧的距离单位为 dp 的indicatorPaddingRight设置指示器距离右侧的距离单位为 dp 的indicatorAlign设置指示器的位置有三个取:left 左边,center 剧中显示,right 右侧显示middle_page_cover设置中间Page是否覆盖(真正的魅族Banner效果)true 覆盖,false 无覆盖效果使用方法1 . xml 布局文件2 . activity中代码:mMZBanner = (MZBannerViewview.findViewById(R.id.banner);              // 设置数据         mMZBanner.setPages(list, new MZHolderCreator() {             @Override             public BannerViewHolder createViewHolder() {                 return new BannerViewHolder();             }         });  public static class BannerViewHolder implements MZViewHolder {         private ImageView mImageView;         @Override         public View createView(Context cont

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧