1.嵌套的Fragment页面
dao层+sql语句:https://blog.csdn.net/weixin_43587850/article/details/84204659
public class Sone extends Fragment {
private ViewPager pager;
private PullToRefreshListView listView;
private List<Integer> list;
private ListBase listBase;
private int page;
private Dao dao;
private String url;
private ImageBase imageBase;
@SuppressLint("HandlerLeak")
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
pager.setCurrentItem(pager.getCurrentItem()+1);
handler.sendEmptyMessageDelayed(0,2000);
}
};
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.sone,container,false);
//获取资源ID
page = 1;
pager = v.findViewById(R.id.imagepager);
listView = v.findViewById(R.id.pulllistview);
dao = new Dao(getActivity());
//添加本地图片
list = new ArrayList<>();
list.add(R.mipmap.a);
list.add(R.mipmap.b);
list.add(R.mipmap.c);
list.add(R.mipmap.d);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
url = getArguments().getString("url");
//无线轮播
imageBase = new ImageBase(getActivity(),list);
pager.setAdapter(imageBase);
int count = imageBase.getCount()/2;
count = count - count%list.size();
pager.setCurrentItem(count);
handler.removeCallbacksAndMessages(0);
handler.sendEmptyMessageDelayed(0,2000);
//内容展示
listBase = new ListBase(getActivity());
listView.setAdapter(listBase);
listView.setMode(PullToRefreshBase.Mode.BOTH);
listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
page = 1;
initdata();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
initdata();
}
});
initdata();
}
public void initdata(){
NetUtil.getJson(String.format(url, page), Bean.class, new NetUtil.CallBack<Bean>() {
@Override
public void success(Bean o) {
if ( ! NetUtil.getNet(getActivity()) || ! o.isok()||o==null) {
Toast.makeText(getActivity(), "当前网络不可用", Toast.LENGTH_SHORT).show();
return;
} else {
List<Bean.DataBean> data = o.getData();
if (page == 1) {
dao.del();
}
for (int i = 0; i < data.size(); i++) {
String title = data.get(i).getNews_title();
String content = data.get(i).getNews_summary();
String _id = data.get(i).getNews_id();
dao.add(_id, title, content);
}
List<Bean.DataBean> lists = dao.cha();
if (page == 1) {
listBase.setdata(o.getData());
} else {
listBase.adddata(o.getData());
}
page++;
listView.onRefreshComplete();
}
}
});
}
}
2.适配器(普通的图片+文本的展示)
class ListBase extends BaseAdapter {
private Context context;
private List<Bean.DataBean> list;
public ListBase(Context context) {
this.context = context;
list = new ArrayList<>();
}
public void setdata(List<Bean.DataBean> lists){
list.clear();
list.addAll(lists);
notifyDataSetChanged();
}
public void adddata(List<Bean.DataBean> lists){
list.addAll(lists);
notifyDataSetChanged();
}
ListBase() {
}
@Override
public int getCount() {
return list.size();
}
@Override
public Bean.DataBean getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
convertView = View.inflate(context, R.layout.item,null);
holder = new ViewHolder();
holder.t1 = convertView.findViewById(R.id.textView);
holder.t2 = convertView.findViewById(R.id.textView2);
holder.imageView = convertView.findViewById(R.id.imageView);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.t1.setText(getItem(position).getNews_title());
holder.t2.setText(getItem(position).getNews_summary());
ImageLoader.getInstance().displayImage(getItem(position).getPic_url(),holder.imageView);
return convertView;
}
class ViewHolder{
TextView t1,t2;
ImageView imageView;
}
}
3.Bean类
public class Bean {
private int status;
private String info;
private List<DataBean> data;
private final int SUCCESS = 1;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
//判断状态值是否相等(为了后面的判断是否有网络)
public boolean isok(){
return status == SUCCESS;
}
public static class DataBean {
private String news_id;
private String news_title;
private String news_summary;
private String pic_url;
public String getNews_id() {
return news_id;
}
public void setNews_id(String news_id) {
this.news_id = news_id;
}
public String getNews_title() {
return news_title;
}
public void setNews_title(String news_title) {
this.news_title = news_title;
}
public String getNews_summary() {
return news_summary;
}
public void setNews_summary(String news_summary) {
this.news_summary = news_summary;
}
public String getPic_url() {
return pic_url;
}
public void setPic_url(String pic_url) {
this.pic_url = pic_url;
}
}
}
4.XMl布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v4.view.ViewPager
android:id="@+id/imagepager"
android:layout_width="match_parent"
android:layout_height="200dp"></android.support.v4.view.ViewPager>
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pulllistview"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@id/imagepager"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
></com.handmark.pulltorefresh.library.PullToRefreshListView>
</android.support.constraint.ConstraintLayout>
5.图片的适配器
public class ImageBase extends PagerAdapter {
private Context context;
private List<Integer> list;
public ImageBase(Context context, List<Integer> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size() >0 ?5000 : 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.CENTER_CROP);
container.addView(imageView);
imageView.setImageResource(list.get(position%list.size()));
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
记得加权限!!!