ListView中嵌套ViewPager(ViewPager是item的一部分),并且存在判断位置的小白点。
2017-01-02 15:55
295 查看
被bug困扰了好久:
1.白点会出现混乱,有的时候是正常的,有的时候会不动(如果界面只有一个item,白点可以正常切换,有两个item就会不动)。
2.当有两个item时,如果滑动上一个item图片与下一个item一样时,下面的item的图片就会消失。
本人新手,贴上代码,求各位大神指导。
1.白点会出现混乱,有的时候是正常的,有的时候会不动(如果界面只有一个item,白点可以正常切换,有两个item就会不动)。
2.当有两个item时,如果滑动上一个item图片与下一个item一样时,下面的item的图片就会消失。
本人新手,贴上代码,求各位大神指导。
package com.glasses.adapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.http.Header; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.content.Context; import android.content.Intent; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; import com.example.activity.R; import com.glasses.activity.TryActivity; import com.glasses.utils.MyViewPager; import com.glasses.utils.NetWorkUtil; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.JsonHttpResponseHandler; import com.loopj.android.http.RequestParams; public class GoodsAdapter extends BaseAdapter { /** * ViewPager */ private MyViewPager viewPager; /** * 装点点的ImageView数组 */ private ImageView[] tips; /** * 装ImageView数组 */ private ImageView[] mImageViews; //存放图片的集合 private List<ImageView> listImg; /** * 图片资源id */ private int[] imgIdArray; // 上下文 private Context context; private LayoutInflater inflater; private Button try_glasses; private ImageView collect; public GoodsAdapter(Context context) { // TODO Auto-generated constructor stub this.context = context; this.inflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return 6; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = inflater.inflate(R.layout.item_goods, null); //放置白点的LinearLayout区域 LinearLayout group = (LinearLayout) view.findViewById(R.id.viewGroup); //获取viewPager控件 viewPager = (MyViewPager) view.findViewById(R.id.viewPager); // 载入图片资源ID imgIdArray = new int[] { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e }; // 将白点加入到LinearLayout中 tips = new ImageView[imgIdArray.length]; for (int i = 0; i < tips.length; i++) { ImageView imageView = new ImageView(context); imageView.setLayoutParams(new LayoutParams(10, 10)); tips[i] = imageView; if (i == 0) { tips[i].setBackgroundResource(R.drawable.page_indicator_focused); } else { tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused); } group.addView(imageView); } //初始化图片集合 listImg = new ArrayList<ImageView>(); // 将图片装载到数组中 mImageViews = new ImageView[imgIdArray.length]; for (int i = 0; i < mImageViews.length; i++) { ImageView imageView = new ImageView(context); imageView.setBackgroundResource(imgIdArray[i]); // imageView.setImageResource(imgIdArray[i]); mImageViews[i] = imageView; listImg.add(imageView); } //适配器设置 viewPager.setAdapter(new MyAdapter()); viewPager.setOnPageChangeListener(new OnPageChangeListener() { //滑动完成调用 @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub Log.i("Glasses", "1111111"); setImageBackground(arg0 % mImageViews.length); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } /** * 设置选中的白点的背景变色 * * @param selectItems */ private void setImageBackground(int selectItems) { for (int i = 0; i < tips.length; i++) { if (i == selectItems) { tips[i].setBackgroundResource(R.drawable.page_indicator_focused); } else { tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused); } } } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); //设置viewPager的起始位置 viewPager.setCurrentItem(0); return view; } public class MyAdapter extends PagerAdapter { @Override public int getCount() { return listImg.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView(listImg.get(position)); } /** * 载入图片进去,用当前的position 除以 图片数组长度取余数是关键 */ @Override public Object instantiateItem(View container, int position) { ViewGroup group = (ViewGroup) listImg.get(position % listImg.size()).getParent(); //判断是否存在图片,如果存在先移除,后添加 if (group != null) { group.removeView(listImg.get(position)); } ((ViewPager) container).addView(listImg.get(position % listImg.size())); return listImg.get(position % listImg.size()); } } }
相关文章推荐
- ListView中嵌套ViewPager(ViewPager是item的一部分),并且存在判断位置的小白点。
- Viewpager中嵌套Listview,而且Listview的item中夹杂ViewPager
- Android ScrollView嵌套Viewpager嵌套ListView切换时到顶部或位置改变问题解决
- scroolView嵌套listview时listView只显示一条item的高,并且还能滑动问题
- Viewpager中嵌套Listview,而且Listview的item中夹杂ViewPager
- listView中嵌套viewpager随着listview滚动
- 【android】ListView的item事件和item里面的view的事件同时存在
- 解决ListView嵌套ViewPager滑动不了的问题
- ListView嵌套ViewPager
- listview 与 viewpager嵌套使用滑动冲突问题
- 使用pulltorefreshscrollview 嵌套 listview viewpager的配置方式
- listview嵌套viewpager 滑动冲突问题
- listview嵌套viewpager 滑动冲突问题
- ListView嵌套ViewPager的小demo讲解
- listview中嵌套viewpager的实现总结
- listview中嵌套viewpager的实现总结
- android中viewpager,scrollview、listview的嵌套问题
- 当ViewPager嵌套在ScrollView/ListView里时,手势冲突如何处理?
- ListView嵌套ViewPager
- ScrollView或者ListView中嵌套ViewPager,展示不出来问题。