package com.bwie.zhaozenghui20181015.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bwie.zhaozenghui20181015.R;
import com.bwie.zhaozenghui20181015.model.MyInageLoader;
import com.bwie.zhaozenghui20181015.model.MyJsonDataBean;
import com.bwie.zhaozenghui20181015.model.MyjsonImage;
import com.bwie.zhaozenghui20181015.ui.MainActivity;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
public class MyAdapter extends BaseAdapter {
LayoutInflater layoutInflater;
Context context;
List<MyJsonDataBean.ResultBean> list;
List<MyjsonImage.DataBean> listImage;
private viewHodlerImage vhiamge;
public void setData(List<MyJsonDataBean.ResultBean> data) {
this.list.clear();
this.list.addAll(data);
notifyDataSetChanged();
}
public void addData(List<MyJsonDataBean.ResultBean> resultBeans) {
if (resultBeans != null) {
this.list.addAll(resultBeans);
notifyDataSetChanged();
}
}
public MyAdapter(LayoutInflater layoutInflater, Context context) {
this.layoutInflater = layoutInflater;
this.list = new ArrayList<>();
this.listImage = new ArrayList<>();
this.context = context;
}
public boolean hasImage(){
return listImage.size() > 0 ;
}
public void setAddImage(List<MyjsonImage.DataBean> addImage) {
this.listImage = addImage;
notifyDataSetChanged();
}
@Override
public int getItemViewType(int position) {
return hasImage() && position == 0 ? 0 : 1;
}
@Override
public int getViewTypeCount() {
return super.getViewTypeCount() + 1;
}
@Override
public int getCount() {
return list.size() + ( hasImage() ? 1:0 );
}
@Override
public Object getItem(int position) {
return list.get( hasImage() ? position -1 : position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHodler vh;
if (getItemViewType(position) == 0){
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.listdatatwp, parent, false);
vhiamge = new viewHodlerImage(convertView);
} else {
vhiamge = (viewHodlerImage) convertView.getTag();
}
vhiamge.viewPagers.setAdapter(new MyPageAdapter(listImage,context));
startPolling();
}else{
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.listdata, parent, false);
vh = new viewHodler(convertView);
} else {
vh = (viewHodler) convertView.getTag();
}
MyJsonDataBean.ResultBean resultBean = (MyJsonDataBean.ResultBean) getItem(position);
// 这是错误的: MyJsonDataBean.ResultBean resultBean = list.get(position);
//这里必须调用getItem 如果调用数据的list的话就会报数组越界
vh.BindData(resultBean);
}
return convertView;
}
class viewHodler {
TextView textView1;
TextView textView2;
ImageView imageView;
public viewHodler(View convertView) {
textView1 = convertView.findViewById(R.id.Text_name);
textView2 = convertView.findViewById(R.id.Text_date);
imageView = convertView.findViewById(R.id.imageView);
convertView.setTag(this);
}
public void BindData(MyJsonDataBean.ResultBean resultBean) {
textView1.setText(resultBean.getName());
textView2.setText(resultBean.getSummary());
ImageLoader.getInstance().displayImage(resultBean.getImageUrl(), imageView, MyInageLoader.getDisplayImageOptions(context));
}
}
class viewHodlerImage {
ViewPager viewPagers;
public viewHodlerImage(View convertView) {
this.viewPagers = convertView.findViewById(R.id.viewPager);
convertView.setTag(this);
}
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
int nextItem = vhiamge.viewPagers.getCurrentItem();
nextItem++;
vhiamge.viewPagers.setCurrentItem(nextItem);
handler.removeMessages(0);//设置message
handler.sendEmptyMessageDelayed(0,2000);
break;
}
}
};
private void startPolling() {
//必須先清除messsage 然后在设置
handler.removeMessages(0);
handler.sendEmptyMessageDelayed(0,2000);
}
}
package com.bwie.zhaozenghui20181015.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bwie.zhaozenghui20181015.model.MyjsonImage;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
public class MyPageAdapter extends PagerAdapter{
List<MyjsonImage.DataBean> list;
Context context;
public MyPageAdapter(List<MyjsonImage.DataBean> listImage, Context context) {
this.context = context;
this.list = listImage ;
}
@Override
public int getCount() {
return list.size() > 0 ? Integer.MAX_VALUE : 0;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view == o;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageLoader.getInstance().displayImage(list.get(position % list.size()).getIcon(),imageView);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}