关于轮播部分的代码显示不全,若查看请点击此处
关于listview的详解:若查看请点击此处
xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--PullToRefreshScrollView 里面上部为一个viewpager轮播图,下部为一个listview-->
<com.handmark.pulltorefresh.library.PullToRefreshScrollView
android:id="@+id/two_pull"
android:layout_width="match_parent"
android:layout_height="match_parent"
ptr:ptrAnimationStyle="flip"
ptr:ptrDrawable="@drawable/default_ptr_flip"
ptr:ptrHeaderBackground="#383838"
ptr:ptrHeaderTextColor="#FFFFFF">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/two_vp"
android:layout_width="match_parent"
android:layout_height="200dp"></android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/two_lin"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignBottom="@id/two_vp"
android:gravity="center"
android:orientation="horizontal"></LinearLayout>
<com.bawei.text04.listview.ListView2
android:id="@+id/two_lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/two_vp"></com.bawei.text04.listview.ListView2>
</RelativeLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>
</RelativeLayout>
Java代码
package com.bawei.text04.fragments;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ScrollView;
import com.bawei.text04.R;
import com.bawei.text04.adapter.TwoAdapter;
import com.bawei.text04.adapter.Two_ImagePager;
import com.bawei.text04.bean.Result;
import com.bawei.text04.utils.MyTask;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.ILoadingLayout;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by sky on 2017/11/15.
*/
public class TwoFragment extends Fragment {
private View v;
private PullToRefreshScrollView rsv;
private ViewPager vp;
private LinearLayout lin;
private List<String> list;
private List<Result.DataBean> lists = new ArrayList();//listView存放数据
private ArrayList<ImageView> images;//存放小圆点控件的集合
private Handler myHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//获取当前正在显示的页面
int index = vp.getCurrentItem();
vp.setCurrentItem(index + 1);
//改变小圆点
setSelectedPoint((index + 1) % list.size());
//延迟发送消息
sendEmptyMessageDelayed(1, 2000);
}
};
private int index;
private ListView lv;
private int pageIndex=0;
private TwoAdapter adapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v = View.inflate(getActivity(), R.layout.two, null);
//初始化组件
initView();
//初始化轮播
initvp();
//初使化refreshScrollView
intRefreshScrollView();
//请求数据
requestData();
return v;
}
private void initView() {
rsv = v.findViewById(R.id.two_pull);//PullToRefreshScrollView
vp = v.findViewById(R.id.two_vp);//ViewPager
lin = v.findViewById(R.id.two_lin);//小圆点
lv = v.findViewById(R.id.two_lv);//listview
}
private void requestData() {
MyTask myTask=new MyTask(new MyTask.Icallbacks() {
@Override
public void updateUiByjson(String jsonstr) {
Gson gson=new Gson();
Result result=gson.fromJson(jsonstr,Result.class);
lists.addAll(result.getData());
setAdapter();
}
});
myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");
}
private void intRefreshScrollView() {
//1.设置模式
rsv.setMode(PullToRefreshBase.Mode.BOTH);
//2.通过调用getLoadingLayoutProxy方法,设置下拉刷新状况布局中显示的文字 ,第一个参数为true,代表下拉刷新
ILoadingLayout headLables = rsv.getLoadingLayoutProxy(true, false);
headLables.setPullLabel("下拉刷新");
headLables.setRefreshingLabel("正在刷新");
headLables.setReleaseLabel("松开刷新");
//2.设置上拉加载底部视图中显示的文字,第一个参数为false,代表上拉加载更多
ILoadingLayout footerLables = rsv.getLoadingLayoutProxy(false, true);
footerLables.setPullLabel("上拉加载");
footerLables.setRefreshingLabel("正在载入...");
footerLables.setReleaseLabel("松开加载更多");
//3.设置监听事件
rsv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
addToTop();
refreshComplete();//刷新完成时关闭
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
addToBottom();
refreshComplete();
}
});
}
private void addToTop() {
MyTask myTask = new MyTask(new MyTask.Icallbacks() {
@Override
public void updateUiByjson(String jsonstr) {
Gson gson = new Gson();
Result result = gson.fromJson(jsonstr, Result.class);
//清空数据
lists.clear();
//添加数据
lists.addAll(result.getData());
//设置适配器
setAdapter();
}
});
myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");
}
private void addToBottom() {
pageIndex++;
MyTask myTask = new MyTask(new MyTask.Icallbacks() {
@Override
public void updateUiByjson(String jsonstr) {
Gson gson = new Gson();
Result result = gson.fromJson(jsonstr, Result.class);
lists.addAll(result.getData());
setAdapter();
}
});
myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex);
}
private void setAdapter() {
if(adapter==null){
adapter=new TwoAdapter(lists,getActivity());
lv.setAdapter(adapter);
}else {
adapter.notifyDataSetChanged();
}
}
private void refreshComplete() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
rsv.onRefreshComplete();
}
}, 1000);
}
/**
* 改变小圆点图片
*
* @param index 页面的下标
*/
private void setSelectedPoint(int index) {
for (int i = 0; i < images.size(); i++) {
if (i == index) {
images.get(i).setImageResource(R.drawable.point_selected);
} else {
images.get(i).setImageResource(R.drawable.point_un_selected);
}
}
}
private void initvp() {
list = new ArrayList<>();
list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151721118&di=649c9a43aed72fbc4d99ec1a031510c6&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F015c7d574b9f8f6ac72525aee98351.jpg");
list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151956771&di=0eb6f306991d24b67a13ceb336f80102&imgtype=0&src=http%3A%2F%2Fi0.hdslb.com%2Fbfs%2Farchive%2F00613def3f1beb7a35ae136341be2b589bc46a2d.jpg_320x200.jpg");
list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151847685&di=c7a4b5d08ec43fa629bcb690039a7629&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_080625%2F20080625_2e91a10c444877e88827vri2ZKdGMvQo.jpg");
list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151825129&di=70bf74b87d8a15cb91a2d79f15ed0eaf&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_081016%2F20081016_fee215664d5740e56c13E2YB8giERFEX.jpg");
list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505746504&di=930c4d677a02328a142d6fa85ed14580&imgtype=jpg&er=1&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_090113%2F20090113_6ac58b42bea94f0b318e1B6BZb5lPZl5.jpg");
//初始化小圆点
initDoc();
//设置适配器
vp.setAdapter(new Two_ImagePager(getActivity(), list));
//设置当前要显示的页面
vp.setCurrentItem(list.size() * 10);
//实现自动播放
myHandler.sendEmptyMessageDelayed(1, 2000);
}
private void initDoc() {
images = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
ImageView imageView = new ImageView(getActivity());
//设置图片的缩放模式
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
//设置要显示的图片
if (i == 0) {
imageView.setImageResource(R.drawable.point_selected);
} else {
imageView.setImageResource(R.drawable.point_un_selected);
}
//设置宽度与高度
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(40, 40);
params.setMargins(10, 0, 10, 0);
//添加到底部容器中
lin.addView(imageView, params);
//添加到集合中
images.add(imageView);
}
}
}
适配器:
TwoAdapter
package com.bawei.text04.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bawei.text04.R;
import com.bawei.text04.bean.Result;
import com.bawei.text04.utils.ImageloaderUtil;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
/**
* Created by sky on 2017/11/16.
*/
public class TwoAdapter extends BaseAdapter{
private List<Result.DataBean> lists;
private Context context;
//private DisplayImageOptions options;
// public TwoAdapter(List<Result.DataBean> datas, Context context) {
// this.datas = datas;
// this.context = context;
// options=new DisplayImageOptions.Builder()
// .cacheInMemory(true)//使用内存缓存
// .cacheOnDisk(true)//使用磁盘缓存
// .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式
// .build();
// }
public TwoAdapter(List<Result.DataBean> lists, Context context) {
this.lists = lists;
this.context = context;
}
@Override
public int getCount() {
return lists.size();
}
@Override
public Object getItem(int i) {
return lists.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder = null;
if(view==null){
view=View.inflate(context, R.layout.item2,null);
holder=new ViewHolder();
holder.tvTitle= (TextView) view.findViewById(R.id.two_item_tv);
holder.img= (ImageView) view.findViewById(R.id.two_item_img);
view.setTag(holder);
}else{
holder=(ViewHolder) view.getTag();
}
holder.tvTitle.setText(lists.get(i).getTitle());
//imageLoader加载图片
ImageLoader.getInstance().displayImage(lists.get(i).getImg(),holder.img, ImageloaderUtil.getImageOptions());//有图片是
return view;
}
class ViewHolder{
public TextView tvTitle;
public ImageView img;
}
}
listView继承类:ListView2
package com.bawei.text04.listview;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
/**
* Created by sky on 2017/11/16.
*/
public class ListView2 extends ListView{
public ListView2(Context context) {
super(context);
}
public ListView2(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ListView2(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);
}
}