判斷是否有網路+PullToRefreshListView+新增資料庫+無線輪播(本地圖片)
阿新 • • 發佈:2018-11-30
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);
}
}
記得加許可權!!!