ViewPager 嵌套 ListView实现简单动态滑动
来源:互联网 发布:网络红歌 编辑:程序博客网 时间:2024/06/05 16:47
本人初学者,第一次写博文,谢谢大家交流学习。
ViewPager 嵌套 ListView实现简单动态滑动
最近在编写一个简单的游戏物品栏,需要用到左右滑动切换页面,并且每页还要有gridview作存放物品的格子,出屏后需要上下滑动;
一下用listView简单说明
发现ViewPager 嵌套 ListView后超过两页就报错。主要代码如下:
public class MainActivity extends Activity {private List<View> views;private ViewPager vpGuide;private ListView listView;private int i = 0;private ListviewAdaper listviewadaper;private String[] strings;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initGuideViews();}private void initGuideViews() {vpGuide = (ViewPager) findViewById(R.id.vwpg);views = new ArrayList<View>();LayoutInflater inflater = LayoutInflater.from(MainActivity.this);/****************************/for (i = 0; i < 3; i++) {strings = new String[] { "苹果", "香蕉", "樱桃", "葡萄", "芒果", "梨", "橘子","苹果", "香蕉", "樱桃", "葡萄", "芒果", "梨", "橘子", "苹果", "香蕉", "樱桃","葡萄", "芒果", "梨", "橘子", "苹果", "香蕉", "樱桃", "葡萄", "芒果", "梨","橘子" };listView = (ListView) (inflater.inflate(R.layout.activity_listview,null)).findViewById(R.id.listView);listviewadaper = new ListviewAdaper(MainActivity.this,R.layout.listview_ltem, strings);listView.setAdapter(listviewadaper);listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {Toast.makeText(MainActivity.this, strings[arg2],Toast.LENGTH_LONG).show();// TODO Auto-generated method stub}});views.add(listView);}/****************************/MainpagerAdapter mainpageradapter = new MainpagerAdapter(views);vpGuide.setAdapter(mainpageradapter);// TODO Auto-generated method stub}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}其实本身以上代码是没有错误,错误指向:继承PagerAdapter适配器的类的加载页面的方法instantiateItem()
public Object instantiateItem(ViewGroup container, int position) { container.addView(views.get(position), 0); return views.get(position); }
平常写静态页面时都还好,为什么加入动态页面就只能滑动两页,第三页就报错。
事后查阅资料发现:加载页面时,事先系统会加载好前两个页面,第三页加载时,会继续调用此方法。
所以错误根源出现在这里,更改后为:
public Object instantiateItem(ViewGroup container, int position) { try { if(views.get(position).getParent()==null) ((ViewPager) container).addView(views.get(position), 0); else{ ((ViewGroup)views.get(position).getParent()).removeView(views.get(position)); ((ViewPager) container).addView(views.get(position), 0); } } catch (Exception e) { e.printStackTrace(); } return views.get(position); }
http://www.tuicool.com/articles/NZFFZz
参照此页代码。
更改后程序运行正常,主要是需要用GetParent返回包含这个窗口的窗口Handle。
1 0
- ViewPager 嵌套 ListView实现简单动态滑动
- 滑动冲突(ScrollView嵌套ViewPager,ViewPager再嵌套ListView)
- listview嵌套viewpager 滑动冲突问题
- listview嵌套viewpager 滑动冲突问题
- ListView子条目横向滑动&&ViewPager嵌套
- Android listview嵌套viewpager滑动冲突问题
- Listview 嵌套 Viewpager 滑动冲突的解决
- Android Listview嵌套viewpager 滑动冲突解决
- ListView中嵌套ViewPager滑动事件冲突
- Listview嵌套Viewpager滑动冲突解决方案
- ViewPager嵌套(内层ViewPager直接实现类继承了兼容ListView滑动的父类)
- viewpager+listview+fragment实现简单的滑动标签页
- 完美解决Android里面scrollview嵌套及listview嵌套viewpager的滑动冲突问题的简单方法
- ScrollerView嵌套listview.实现,listview滑动
- viewpager滑动页面动态实现
- Android 嵌套ViewPager实现连贯双滑动
- 防止viewpager和子view滑动冲突(ScrollView嵌套webview,Listview嵌套Listview 滑动事件冲突)
- ViewPager+TabLayout滑动简单实现
- Java数据接口编写简单例子,Java Json解析,服务端接口输出Json数据,客户端通过HTTP获取接口Json数据
- Auto inspection lot creation and Auto Usage decision for required parts
- Myeclipse在线集成svn
- Android学习笔记三十四:android 线程 wait notify
- android常见的内存泄露及解决方案
- ViewPager 嵌套 ListView实现简单动态滑动
- 【代码笔记】iOS-改变导航条标题的颜色为红色
- 超低成本的2.4G超远距离无线遥控、无线传输方案随笔
- 网络管理员的个人修养
- java学习笔记5.20
- ASP.NET控件之RequiredFieldValidator控件
- 136SingleNumber
- 贪婪深度神经网络概述
- Android学习笔记三十五:socket 编程 实现消息推送