自定义ListView
package bwei.com.zhangteng1219; import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /** * Created by Zhang.T on 2017/12/19. */ public class MyList extends ListView { public MyList(Context context) { super(context); } public MyList(Context context, AttributeSet attrs) { super(context, attrs); } public MyList(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
/
Viewpager 适配器
package bwei.com.zhangteng1219; import android.content.Context; import android.content.Intent; import android.support.v4.view.PagerAdapter; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; import bwei.com.zhangteng1219.Bean.Three; /** * Created by Zhang.T on 2017/12/19. */ public class Pageadapter extends PagerAdapter { private Context context; private List<String> pictures; public Pageadapter(Context context, List<String> pictures) { this.context = context; this.pictures = pictures; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, final int position) { ImageView image=new ImageView(context); ImageLoader.getInstance().displayImage(pictures.get(position%pictures.size()),image); container.addView(image); image.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Intent intent = new Intent(context,Main2Activity.class); String url="https://www.baidu.com"; intent.putExtra("url",url); context.startActivity(intent); return true; } }); return image; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }//主页面 实现逻辑package bwei.com.zhangteng1219; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import com.handmark.pulltorefresh.library.PullToRefreshScrollView; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.utils.L; import java.util.ArrayList; import java.util.List; import bwei.com.zhangteng1219.Bean.Result; import bwei.com.zhangteng1219.Bean.Three; import bwei.com.zhangteng1219.Bean.Two; import bwei.com.zhangteng1219.Utils.MyTask; import static android.R.attr.author; import static android.R.attr.data; //Viewpager+Hanlder 实现图片轮播 // 实现PuLLtoResfresh 下拉刷新 上拉加载 //布局 //逻辑 public class MainActivity extends AppCompatActivity { private adapter adapter; private List<Three.DataBean> datasss=new ArrayList<>(); private int pageIndex=5; private List<Two.DataBean.EssayBean> datas = new ArrayList<>(); private List<Result.ResultBean.DataBean> datass=new ArrayList<>(); private List<String> pictures; private ViewPager mVp; private MyList mLv; private PullToRefreshScrollView mScr; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 1) { mVp.setCurrentItem(mVp.getCurrentItem() + 1); } handler.sendEmptyMessageDelayed(1, 2000); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ConnectivityManager manager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); //2.得到网络信息对象 NetworkInfo networkInfo=manager.getActiveNetworkInfo(); //3.进行判断 if(networkInfo!=null && networkInfo.isConnected()){ Toast.makeText(this, "已连接互联网", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(this, "mei连接互联网", Toast.LENGTH_SHORT).show(); } initView(); LunBo(); intRefreshScrollView(); } private void intRefreshScrollView() { //1.设置模式 mScr.setMode(PullToRefreshBase.Mode.BOTH); //2.通过调用getLoadingLayoutProxy方法,设置下拉刷新状况布局中显示的文字 ,第一个参数为true,代表下拉刷新 ILoadingLayout headLables = mScr.getLoadingLayoutProxy(true, false); headLables.setPullLabel("下拉刷新"); headLables.setRefreshingLabel("正在刷新"); headLables.setReleaseLabel("松开刷新"); //2.设置上拉加载底部视图中显示的文字,第一个参数为false,代表上拉加载更多 ILoadingLayout footerLables = mScr.getLoadingLayoutProxy(false, true); footerLables.setPullLabel("上拉加载"); footerLables.setRefreshingLabel("正在载入..."); footerLables.setReleaseLabel("松开加载更多"); //3.设置监听事件 mScr.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) { addToTop();//请求网络数据,并更新listview组件 refreshComplete();//数据加载完成后,关闭header,footer } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) { addToBottom();//请求网络数据,并更新listview组件 refreshComplete();//数据加载完成后,关闭header,footer } }); } /** * 刷新完成时关闭 */ public void refreshComplete() { new Handler().postDelayed(new Runnable() { @Override public void run() { mScr.onRefreshComplete(); } }, 1000); } public void addToTop(){ MyTask myTask=new MyTask(new MyTask.Icallbacks() { @Override public void updateUiByjson(String jsonstr) { Gson gson=new Gson(); Three three = gson.fromJson(jsonstr, Three.class); //添加到大集合对象中 List<Three.DataBean> data = three.getData(); datasss.addAll(data); //设置适配器 setAdapter(); } }); myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum="+pageIndex); } public void addToBottom(){ MyTask myTask=new MyTask(new MyTask.Icallbacks() { @Override public void updateUiByjson(String jsonstr) { Gson gson=new Gson(); Three three = gson.fromJson(jsonstr, Three.class); //添加到大集合对象中 List<Three.DataBean> data = three.getData(); datasss.addAll(data); //设置适配器 setAdapter(); } }); myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum="+pageIndex); } private void LunBo() { pictures = new ArrayList<>(); MyTask myTask = new MyTask(new MyTask.Icallbacks() { @Override public void updateUiByjson(String jsonstr){ Gson gson = new Gson(); Three three = gson.fromJson(jsonstr, Three.class); List<Three.DataBean> data = three.getData(); for (Three.DataBean e:data ) { String imageurl = e.getIMAGEURL(); pictures.add(imageurl); } Pageadapter pageadapter = new Pageadapter(MainActivity.this, pictures); mVp.setAdapter(pageadapter); mVp.setCurrentItem(pictures.size() * 1000); handler.sendEmptyMessageDelayed(1, 2000); } }); myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=1"); } public void setAdapter(){ if(adapter==null){ adapter=new adapter(); mLv.setAdapter(adapter); }else{ adapter.notifyDataSetChanged(); } } private void initView() { mVp = (ViewPager) findViewById(R.id.vp); mLv = (MyList) findViewById(R.id.lv); mScr = (PullToRefreshScrollView) findViewById(R.id.Scr); } class adapter extends BaseAdapter{ @Override public int getCount() { return datasss.size(); } @Override public Object getItem(int position) { return datasss.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { Viewholder holder; if (convertView==null) { convertView=View.inflate(MainActivity.this,R.layout.one,null); holder=new Viewholder(); holder.one=convertView.findViewById(R.id.textView); holder.im=convertView.findViewById(R.id.imageView); convertView.setTag(holder); }else { holder=(Viewholder) convertView.getTag(); } holder.one.setText(datasss.get(position).getTITLE()); ImageLoader.getInstance().displayImage(datasss.get(position).getIMAGEURL(),holder.im); return convertView; } } class Viewholder{ TextView one; ImageView im; } }/布局<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="bwei.com.zhangteng1219.MainActivity" android:orientation="vertical"> <com.handmark.pulltorefresh.library.PullToRefreshScrollView android:id="@+id/Scr" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="150dp"> </android.support.v4.view.ViewPager> <bwei.com.zhangteng1219.MyList android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv"> </bwei.com.zhangteng1219.MyList> </LinearLayout> </com.handmark.pulltorefresh.library.PullToRefreshScrollView> </RelativeLayout>