1. 程式人生 > >Android : tablayout +側滑選單 + 豎立的tablayout +資料庫增刪改查+XListView+PullToRefresh 綜合

Android : tablayout +側滑選單 + 豎立的tablayout +資料庫增刪改查+XListView+PullToRefresh 綜合

側拉選單
在這裡插入圖片描述
一個XListview載入,一個是PullToRefresh重新整理
在這裡插入圖片描述
一個是本地資料的重新整理一個是網路資料的重新整理
在這裡插入圖片描述
資料庫的增刪查
在這裡插入圖片描述
需要用到的許可權

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

需要用到的jar包

com.android.support:design:28.0.0
com.google.code.gson:gson:2.8.5
com.nostra13.universalimageloader:universal-image-loader:1.9.5
com.github.bumptech.glide:glide:4.8.0

implementation 'q.rorbin:VerticalTabLayout:1.2.5'
implementation 'com.recker.flybanner:flybanner:1.3'

	//兩個Libraries
    implementation project(':xlistviewflush')
    implementation project(':pulltolibrary')

下面直接上程式碼
首先是三個介面卡的

package com.bwie.administrator.zhoukaominione.adapter;

import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;

public class MyPageAdapter extends FragmentPagerAdapter {
    private ArrayList<Fragment> datas;
    private ArrayList<String> Titles;

    public MyPageAdapter(FragmentManager fm, ArrayList<Fragment> datas, ArrayList<String> titles) {
        super(fm);
        this.datas = datas;
        Titles = titles;
    }

    @Override
    public Fragment getItem(int i) {
        return datas.get(i);
    }

    @Override
    public int getCount() {
        return datas.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        //將tablayout的名字返回去
        return Titles.get(position);
    }
}

資料庫用的介面卡

package com.bwie.administrator.zhoukaominione.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.bwie.administrator.zhoukaominione.R;
import com.bwie.administrator.zhoukaominione.bean.MyUser;

import java.util.ArrayList;

public class SqliteAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<MyUser> datas;

    public SqliteAdapter(Context context, ArrayList<MyUser> datas) {
        this.context = context;
        this.datas = datas;
    }

    public ArrayList<MyUser> getDatas() {
        return datas;
    }

    public void setDatas(ArrayList<MyUser> datas) {
        this.datas = datas;
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return datas.size();
    }

    @Override
    public Object getItem(int position) {
        return datas.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null){
            convertView = View.inflate(context,R.layout.myuser,null);
            holder = new ViewHolder();
            holder.tv_name = convertView.findViewById(R.id.User_Name);
            holder.tv_pwd = convertView.findViewById(R.id.User_Pwd);
            convertView.setTag(holder);
        }else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.tv_name.setText(datas.get(position).getUserName());
        holder.tv_pwd.setText(datas.get(position).getUserPwd());
        return convertView;
    }


    class ViewHolder{
        TextView tv_name;
        TextView tv_pwd;
    }

用到的xml的程式碼

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/User_Name"
        android:focusable="false"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/User_Pwd"
        android:focusable="false"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/User_Name" />


</RelativeLayout>

資料展示的我還加了一個多條目佈局用的圖

package com.bwie.administrator.zhoukaominione.adapter;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.bwie.administrator.zhoukaominione.R;
import com.bwie.administrator.zhoukaominione.bean.MyData;

import java.util.ArrayList;

public class XListViewAdapter extends BaseAdapter {
    private final int One = 0;
    private final int Two = 1;
    private ArrayList<MyData.DataBean> datas;
    private Context context;

    public XListViewAdapter(ArrayList<MyData.DataBean> datas, Context context) {
        this.datas = datas;
        this.context = context;
    }

    public ArrayList<MyData.DataBean> getDatas() {
        return datas;

    }

    public void setDatas(ArrayList<MyData.DataBean> datas) {
        this.datas = datas;
        Log.e("mmm", "setDatas: "+datas.toString());
        //重新整理介面卡
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return datas.size();
    }

    @Override
    public Object getItem(int position) {
        return datas.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //宣告一個holder類
        ViewHolderOne holderOne = null;
        ViewHolderTwo holderTwo = null;
        MyData.DataBean dataBean = datas.get(position);
        // 獲取專案檢視型別
        int type = getItemViewType(position);
        if (type == One) {
            if (convertView == null) {
                convertView = View.inflate(context, R.layout.xlistview_one, null);
                holderOne = new ViewHolderOne();
                holderOne.iv_one = convertView.findViewById(R.id.Image_One);
                holderOne.tv_title_one = convertView.findViewById(R.id.Title_One);
                holderOne.tv_content_one = convertView.findViewById(R.id.Content_One);
                convertView.setTag(holderOne);
            } else {
                holderOne = (ViewHolderOne) convertView.getTag();
            }
            Glide.with(context).load(dataBean.getThumbnail_pic_s()).into(holderOne.iv_one);
            holderOne.tv_title_one.setText(dataBean.getTitle());
            holderOne.tv_content_one.setText(dataBean.getCategory());
        }else if (type == Two){
            if (convertView == null) {
                convertView = View.inflate(context, R.layout.xlistview_two, null);
                holderTwo = new ViewHolderTwo();
                holderTwo.iv_two = convertView.findViewById(R.id.Image_Two);
                holderTwo.tv_title_two = convertView.findViewById(R.id.Title_Two);
                holderTwo.tv_content_two = convertView.findViewById(R.id.Content_Two);
                convertView.setTag(holderTwo);
            } else {
                holderTwo = (ViewHolderTwo) convertView.getTag();
            }
            Glide.with(context).load(dataBean.getThumbnail_pic_s()).into(holderTwo.iv_two);
            holderTwo.tv_title_two.setText(dataBean.getTitle());
            holderTwo.tv_content_two.setText(dataBean.getCategory());
        }
        return convertView;
    }

    class ViewHolderOne {
        ImageView iv_one;
        TextView tv_title_one;
        TextView tv_content_one;
    }

    class ViewHolderTwo {
        ImageView iv_two;
        TextView tv_title_two;
        TextView tv_content_two;
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        //進行判斷
        if (position % 2 == 0) {
            return One;
        } else {
            return Two;
        }
    }

多條目式圖的兩個佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/Image_One"
        android:layout_width="70dp"
        android:layout_height="70dp" />

    <TextView
        android:id="@+id/Title_One"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/Content_One"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/Title_Two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/Content_Two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/Image_Two"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_alignParentRight="true" />
</RelativeLayout>

資料庫用到的bean

package com.bwie.administrator.zhoukaominione.bean;

public class MyUser {

    private String userName;
    private String userPwd;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }
}

獲取資料用到的bean

package com.bwie.administrator.zhoukaominione.bean;

import java.util.List;

public class MyData {
    
    private String msg;
    private int code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
      

        private String uniquekey;
        private String title;
        private String date;
        private String category;
        private String author_name;
        private String url;
        private String thumbnail_pic_s;
        private String thumbnail_pic_s02;
        private String thumbnail_pic_s03;

        public String getUniquekey() {
            return uniquekey;
        }

        public void setUniquekey(String uniquekey) {
            this.uniquekey = uniquekey;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getDate() {
            return date;
        }

        public void setDate(String date) {
            this.date = date;
        }

        public String getCategory() {
            return category;
        }

        public void setCategory(String category) {
            this.category = category;
        }

        public String getAuthor_name() {
            return author_name;
        }

        public void setAuthor_name(String author_name) {
            this.author_name = author_name;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }

        public String getThumbnail_pic_s() {
            return thumbnail_pic_s;
        }

        public void setThumbnail_pic_s(String thumbnail_pic_s) {
            this.thumbnail_pic_s = thumbnail_pic_s;
        }

        public String getThumbnail_pic_s02() {
            return thumbnail_pic_s02;
        }

        public void setThumbnail_pic_s02(String thumbnail_pic_s02) {
            this.thumbnail_pic_s02 = thumbnail_pic_s02;
        }

        public String getThumbnail_pic_s03() {
            return thumbnail_pic_s03;
        }

        public void setThumbnail_pic_s03(String thumbnail_pic_s03) {
            this.thumbnail_pic_s03 = thumbnail_pic_s03;
        }
    }
}

資料庫用的dao層

package com.bwie.administrator.zhoukaominione.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.bwie.administrator.zhoukaominione.bean.MyUser;
import com.bwie.administrator.zhoukaominione.sqlhelper.SQLiteHeleper;

import java.util.ArrayList;

public class MyDao {
    private SQLiteDatabase database;

    public MyDao(Context context) {
        SQLiteHeleper heleper = new SQLiteHeleper(context);
        database = heleper.getWritableDatabase();
    }

    public ArrayList<MyUser> show() {
        //建立一個集合
        ArrayList<MyUser> datas = new ArrayList<MyUser>();
        Cursor us = database.query("user", null, null, null, null, null, null, null);
        while (us.moveToNext()) {
            String name = us.getString(us.getColumnIndex("username"));
            String pwd = us.getString(us.getColumnIndex("userpwd"));
            MyUser uu = new MyUser();
            uu.setUserName(name);
            uu.setUserPwd(pwd);
            datas.add(uu);
        }
        return datas;
    }

    //新增
    public void add(ArrayList<MyUser> datas) {
        //迴圈新增資料
        for (int i = 0; i < datas.size(); i++) {
            ContentValues values = new ContentValues();
            values.put("username", datas.get(i).getUserName());
            values.put("userpwd", datas.get(i).getUserPwd());
            database.insert("user", null, values);
        }
    }

    //刪除
    public int dele(String username) {
        int i = database.delete("user", "username = ?", new String[]{username});
        return i;
    }

   //修改
    public int updateData(String username ,String userpwd) {
        ContentValues values = new ContentValues();
        values.put("username", username);
        values.put("userpwd",userpwd);
        int i = database.update("user", values, "username = ?", new String[]{username});
        return i;
    }
}

資料庫用的sqlitehelper類

package com.bwie.administrator.zhoukaominione.sqlhelper;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class SQLiteHeleper extends SQLiteOpenHelper {
    public SQLiteHeleper(Context context) {
        super(context, "MyweekThree", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //建立資料庫
        db.execSQL("create table user(username text , userpwd text)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

寫側滑選單的mainactivity

package com.bwie.administrator.zhoukaominione;

import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bwie.administrator.zhoukaominione.fragment.FragmentOne;
import com.bwie.administrator.zhoukaominione.fragment.SqliteFragment;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private FrameLayout Fragment_Layout;
    private TextView XList_View;
    private TextView Sql_Layout;
    private LinearLayout Zuo_Layout;
    private DrawerLayout Activity_Dra_Layout;
    private FragmentManager manager;
    private FragmentOne fragmentOne;
    private SqliteFragment sqliteFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
        initView();
    }

    private void initData() {
        fragmentOne = new FragmentOne();
        sqliteFragment = new SqliteFragment();

    }

    private void initView() {
        XList_View = (TextView) findViewById(R.id.XList_View);
        XList_View.setOnClickListener(this);
        Sql_Layout = (TextView) findViewById(R.id.Sql_Layout);
        Sql_Layout.setOnClickListener(this);
        Activity_Dra_Layout = (DrawerLayout) findViewById(R.id.Activity_Dra_Layout);
        manager = getSupportFragmentManager();
    }

    @Override
    public void onClick(View v) {
        //進行點選事件的判斷
        switch (v.getId()) {
            case R.id.XList_View:
                manager.beginTransaction().replace(R.id.Fragment_Layout,fragmentOne).commit();
                Activity_Dra_Layout.closeDrawers();
                break;
            case R.id.Sql_Layout:
                manager.beginTransaction().replace(R.id.Fragment_Layout,sqliteFragment).commit();
                Activity_Dra_Layout.closeDrawers();
                break;
        }
    }
}

activity的xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:id="@+id/Activity_Dra_Layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:id="@+id/Fragment_Layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></FrameLayout>
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/Zuo_Layout"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/colorPrimary"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="XList_View"
            android:textSize="32sp"
            android:id="@+id/XList_View"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="資料庫"
            android:textSize="32sp"
            android:id="@+id/Sql_Layout"/>
    </LinearLayout>

</android.support.v4.widget.DrawerLayout>

帶側滑的fragment頁面

package com.bwie.administrator.zhoukaominione.fragment;


import android.os.Bundle;
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 com.bwie.administrator.zhoukaominione.R;
import com.bwie.administrator.zhoukaominione.adapter.MyPageAdapter;

import java.util.ArrayList;

import q.rorbin.verticaltablayout.VerticalTabLayout;

/**
 * A simple {@link Fragment} subclass.
 */
public class FragmentOne extends Fragment {
    private ArrayList<Fragment> datas = new ArrayList<>();
    private ArrayList<String> titles = new ArrayList<>();
    private VerticalTabLayout Tab_Loyout;
    private ViewPager View_PAGE;
    private View v;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // 引入檢視
        v = inflater.inflate(R.layout.fragment_fragment_one, null);
        //初始化資料
        initData();
        //查詢控制元件
        initView();
        return v;
    }

    private void initData() {
        datas.add(new FragmentLoad());
        datas.add(new SlideshowFragment());
        titles.add("載入");
        titles.add("輪播圖");
    }
    private void initView() {
        Tab_Loyout = v.findViewById(R.id.Tab_Loyout);
        View_PAGE = v.findViewById(R.id.View_PAGE);
        //fragment巢狀fragment
        View_PAGE.setAdapter(new MyPageAdapter(getChildFragmentManager(), datas, titles));
        Tab_Loyout.setupWithViewPager(View_PAGE);
    }


}

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    tools:context=".fragment.FragmentOne">

    <q.rorbin.verticaltablayout.VerticalTabLayout
        android:id="@+id/Tab_Loyout"
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:background="#EDEDED"></q.rorbin.verticaltablayout.VerticalTabLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/View_PAGE"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v4.view.ViewPager>
</LinearLayout>

載入選項的fragment頁面

package com.bwie.administrator.zhoukaominione.fragment;


import android.os.Bundle;
import android.support.design.widget.TabLayout;
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 com.bwie.administrator.zhoukaominione.R;
import com.bwie.administrator.zhoukaominione.adapter.MyPageAdapter;

import java.util.ArrayList;

/**
 * A simple {@link Fragment} subclass.
 */
public class FragmentLoad extends Fragment {
    private ArrayList<Fragment> datas = new ArrayList<>();
    private ArrayList<String> titles = new ArrayList<>();
    private View v;
    private TabLayout Heng_Tab;
    private ViewPager Heng_View;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // 引入檢視
        v = inflater.inflate(R.layout.fragment_load, null);
        //初始化頁面佈局
        initData();
        //查詢控制元件
        initView();
        return v;
    }

    private void initData() {
        datas.add(new XListViewFragment());
        datas.add(new PullToRefreshFragment());
        titles.add("XListView");
        titles.add("PullToRefresh");
    }

    private void initView() {
        Heng_Tab = (TabLayout) v.findViewById(R.id.Heng_Tab);
        Heng_View = (ViewPager) v.findViewById(R.id.Heng_View);
        Heng_View.setAdapter(new MyPageAdapter(getChildFragmentManager(), datas, titles));
        Heng_Tab.setupWithViewPager(Heng_View);
    }
}

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".fragment.FragmentLoad">

    <android.support.design.widget.TabLayout
        android:id="@+id/Heng_Tab"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></android.support.design.widget.TabLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/Heng_View"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></android.support.v4.view.ViewPager>
</LinearLayout>

XListView的載入fragment

package com.bwie.administrator.zhoukaominione.fragment;


import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.bwie.administrator.zhoukaominione.R;
import com.bwie.administrator.zhoukaominione.adapter.XListViewAdapter;
import com.bwie.administrator.zhoukaominione.bean.MyData;
import com.bwie.administrator.zhoukaominione.util.HttpUtil;
import com.example.xlistviewflush.view.XListView;
import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.Date;

/**
 * A simple {@link Fragment} subclass.
 */
public class XListViewFragment extends Fragment implements XListView.IXListViewListener {
    private View v;
    private XListView xList_View;
    private String mUrl = "http://www.xieast.com/api/news/news.php?page=";
    private XListViewAdapter adapter;
    private ArrayList<MyData.DataBean> datas = new ArrayList<>();
    private int start = 1;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // 引入檢視
        v = inflater.inflate(R.layout.fragment_xlist_view, null);
        initView();
        //設定載入器
        xList_View.setPullLoadEnable(true);
        //設定監聽事件
        xList_View.setXListViewListener(this);
        //建立介面卡
        adapter = new XListViewAdapter(datas, getActivity());
        //設定介面卡
        xList_View.setAdapter(adapter);
        new MyTask().execute(mUrl + start);
        return v;
    }

    private void initView() {
        xList_View = v.findViewById(R.id.xList_View);

    }

    //進行非同步載入
    class MyTask extends AsyncTask<String, Void, ArrayList<MyData.DataBean>> {
        @Override
        protected ArrayList<MyData.DataBean> doInBackground(String... strings) {
            //進行解析
            String jsonstr = HttpUtil.getStr(strings[0]);
            Gson gson = new Gson();
            MyData myData = gson.fromJson(jsonstr, MyData.class);
            return (ArrayList<MyData.DataBean>) myData.getData();
        }

        @Override
        protected void onPostExecute(ArrayList<MyData.DataBean> dataBeans) {
            super.onPostExecute(dataBeans);
            datas.addAll(dataBeans);
            //重新整理介面卡
           adapter.notifyDataSetChanged();
            //停止重新整理動畫
            stopRefresh();
        }
    }

    private void stopRefresh() {
        //停止重新整理
        xList_View.stopRefresh();
        xList_View.stopLoadMore();
        //顯示重新整理時間
        Date date = new Date();
        String datast = (String) android.text.format.DateFormat.format("EEEE, MMMM dd日, yyyy kk:mm:ss", date);
        xList_View.setRefreshTime(datast);
    }

    @Override
    public void onRefresh() {
        //上拉重新整理
        datas.clear();
        start = 1;
        new MyTask().execute(mUrl+start);
        stopRefresh();
    }

    @Override
    public void onLoadMore() {
        //下拉載入
        new MyTask().execute(mUrl+(start++));
    }
}

XListView的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".fragment.XListViewFragment">
    
   <com.example.xlistviewflush.view.XListView
        android:id="@+id/xList_View"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></com.example.xlistviewflush.view.XListView>
</LinearLayout>

PullToRefresh的fragment

package com.bwie.administrator.zhoukaominione.fragment;


import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import com.bwie.administrator.zhoukaominione.R;
import com.bwie.administrator.zhoukaominione.adapter.XListViewAdapter;
import com.bwie.administrator.zhoukaominione.bean.MyData;
import com.bwie.administrator.zhoukaominione.util.HttpUtil;
import com.example.pulltolibrary.PullToRefreshBase;
import com.example.pulltolibrary.PullToRefreshListView;
import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.List;

/**
 * A simple {@link Fragment} subclass.
 */
public class PullToRefreshFragment extends Fragment {
    private ArrayList<MyData.DataBean> datas = new ArrayList<>();
    private View v;
    private PullToRefreshListView Pull_To;
    private XListViewAdapter adapter;
    private int index = 1;
    private String mUrl = "http://www.xieast.com/api/news/news.php?page=";
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            //進行判斷
            if (msg.what == 0) {
                datas.addAll((List<MyData.DataBean>) msg.obj);
                //進行重新整理
                adapter.notifyDataSetChanged();
               /*adapter.setDatas((ArrayList<MyData.DataBean>) msg.obj);*/
                //取消一直重新整理
                Pull_To.onRefreshComplete();
            }
        }
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //
        v = inflater.inflate(R.layout.fragment_pull_to_refresh, null);
        initView();
        return v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        adapter = new XListViewAdapter(datas, getActivity());
        Pull_To.setAdapter(adapter);
        initData(index);
        setListener();
    }

    private void initData(final int index) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                String jsonstr = HttpUtil.getStr(mUrl + index);
                Gson gson = new Gson();
                MyData myData = gson.fromJson(jsonstr, MyData.class);
                handler.sendMessage(handler.obtainMessage(0, myData.getData()));
            }
        }).start();

    }

    private void initView() {
        Pull_To = (PullToRefreshListView) v.findViewById(R.id.Pull_To);
        //設定上下拉滑動
        Pull_To.setMode(PullToRefreshBase.Mode.BOTH);


    }
    private void setListener() {
        Pull_To.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                index = 1;
                datas.clear();
                initData(index);
            }

            @Override//下拉載入
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                index++;
                initData(index);
            }
        });

    }
}

.PullToRefresh重新整理頁面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragment.PullToRefreshFragment">

    <com.example.pulltolibrary.PullToRefreshListView
        android:id="@+id/Pull_To"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></com.example.pulltolibrary.PullToRefreshListView>

</RelativeLayout>

輪播圖的Fragment

package com.bwie.administrator.zhoukaominione.fragment;


import android.os.Bundle;
import android.support.design.widget.TabLayout;
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 com.bwie.administrator.zhoukaominione.R;
import com.bwie.administrator.zhoukaominione.adapter.MyPageAdapter;

import java.util.ArrayList;

/**
 * A simple {@link Fragment} subclass.
 */
public class SlideshowFragment extends Fragment {

    private View v;
    private TabLayout MySlide_Tab;
    private ViewPager MySlide_View;
    private ArrayList<Fragment> datas = new ArrayList<>();
    private ArrayList<String> titles = new ArrayList<>();

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // 引入檢視
        v = inflater.inflate(R.layout.fragment_slideshow, null);
        //初始化fragment
        initData();
        initView();
        return v;
    }

    private void initData() {
        datas.add(new MySlideshowFragment());
        datas.add(new HttpSlideshowFragment());
        titles.add("我的輪播圖");
        titles.add("網路輪播圖");
    }

    private void initView() {
        MySlide_Tab = v.findViewById(R.id.MySlide_Tab);
        MySlide_View = v.findViewById(R.id.MySlide_View);

        MySlide_View.setAdapter(new MyPageAdapter(getChildFragmentManager(), datas, titles));
        MySlide_Tab.setupWithViewPager(MySlide_View);
    }
}

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".fragment.SlideshowFragment">

    <android.support.design.widget.TabLayout
        android:id="@+id/MySlide_Tab"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></android.support.design.widget.TabLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/MySlide_View"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></android.support.v4.view.ViewPager>
</LinearLayout>

本地輪播圖

package com.bwie.administrator.zhoukaominione.fragment;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.bwie.administrator.zhoukaominione.R;
import com.recker.flybanner.FlyBanner;

import java.util.ArrayList;

/**
 * A simple {@link Fragment} subclass.
 */
public class MySlideshowFragment extends Fragment {

    private FlyBanner MyBanner;
    private View v;
   // private int[] image = new int[]{R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d};

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // 引入檢視
        v = inflater.inflate(R.layout.fragment_my_slideshow, null);
        initView();

        return v;
    }



    private void initView() {
        MyBanner = (FlyBanner) v.findViewById(R.id.MyBanner);
        //新增資料
        ArrayList<Integer> imgs = new ArrayList<>();
        imgs.add(R.drawable.a);
        imgs.add(R.drawable.b);
        imgs.add(R.drawable.c);
        imgs.add(R.drawable.d);
        MyBanner.setImages(imgs);

    }
}

本地輪播圖的xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragment.MySlideshowFragment">

    <com.recker.flybanner.FlyBanner
        android:id="@+id/MyBanner"
        android:layout_width="match_parent"
        android:layout_height="400dp"></com.recker.flybanner.FlyBanner>

</FrameLayout>

網路輪播圖

package com.bwie.administrator.zhoukaominione.fragment;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.bwie.administrator.zhoukaominione.R;
import com.recker.flybanner.FlyBanner;

import java.util.ArrayList;

/**
 * A simple {@link Fragment} subclass.
 */
public class HttpSlideshowFragment extends Fragment {

    private FlyBanner HttpBanner;
    private String[] mImageUrl = {
            "http://img4.imgtn.bdimg.com/it/u=2430963138,1300578556&fm=23&gp=0.jpg",
            "http://img1.imgtn.bdimg.com/it/u=2755648979,3568014048&fm=23&gp=0.jpg",
            "http://img0.imgtn.bdimg.com/it/u=2272739960,4287902102&fm=23&gp=0.jpg",
            "http://img3.imgtn.bdimg.com/it/u=1078051055,1310741362&fm=23&gp=0.jpg"
    };
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_http_slideshow, null);
        initView(v);
        return v;
    }


    private void initView(View v) {
        HttpBanner = (FlyBanner) v.findViewById(R.id.HttpBanner);
        ArrayList<String> mHttpImage = new ArrayList<>();
        //進行迴圈新增網路圖片
        for (int i=0;i<mImageUrl.length;i++){
            mHttpImage.add(mImageUrl[i]);
        }
        HttpBanner.setImagesUrl(mHttpImage);
    }
}

網路輪播圖的xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragment.HttpSlideshowFragment">

    <com.recker.flybanner.FlyBanner
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:id="@+id/HttpBanner"></com.recker.flybanner.FlyBanner>

</FrameLayout>

資料庫的程式碼

package com.bwie.administrator.zhoukaominione.fragment;


import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.Toast;

import com.bwie.administrator.zhoukaominione.Main2Activity;
import com.bwie.administrator.zhoukaominione.R;
import com.bwie.administrator.zhoukaominione.adapter.SqliteAdapter;
import com.bwie.administrator.zhoukaominione.bean.MyUser;
import com.bwie.administrator.zhoukaominione.dao.MyDao;
import com.bwie.administrator.zhoukaominione.sqlhelper.SQLiteHeleper;
import com.example.xlistviewflush.view.XListView;

import java.util.ArrayList;

/**
 * A simple {@link Fragment} subclass.
 */
public class SqliteFragment extends Fragment implements View.OnClickListener {

    private View v;
    private Button MyAdd;
    private XListView MySqlListView;
    private MyDao dao;
    private ArrayList<MyUser> users = new ArrayList<MyUser>();
    private SqliteAdapter adapter;
    private SQLiteDatabase database;
    private SQLiteHeleper sqLiteDatabase;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        // 引入檢視
        v = inflater.inflate(R.layout.fragment_sqlite, null);
        initView();
        sqLiteDatabase = new SQLiteHeleper(getActivity());
        database = sqLiteDatabase.getWritableDatabase();
        dao = new MyDao(getActivity());
        initData();
        return v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        MySqlListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
                Log.e("onItemClick: zzz",position+"" );
                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                builder.setTitle("操作");
                builder.setMessage("確定要刪除嗎?");
                builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        int i = dao.dele(users.get(position-1).getUserName());
                        if (i>0){
                            Toast.makeText(getActivity(),"刪除成功",Toast.LENGTH_SHORT).show();
                        }
                        initData();
                    }
                });
                builder.setNegativeButton("修改", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(getActivity(),Main2Activity.class);
                        String name = users.get(position-1).getUserName();
                        String pwd = users.get(position-1).getUserPwd();
                        intent.putExtra("username",name);
                        intent.putExtra("userpwd",pwd);
                        startActivity(intent);
                    }
                });
                builder.show();
            }
        });
    }

    private void initData() {
        users = dao.show();
        adapter = new SqliteAdapter(getActivity(), users);
        MySqlListView.setAdapter(adapter);
    }
    @Override
    public void onResume() {
        super.onResume();
        initData();
        adapter.notifyDataSetChanged();
    }
    private void initView() {
        MyAdd = (Button) v.findViewById(R.id.MyAdd);
        MySqlListView = (XListView) v.findViewById(R.id.MySqlListView);
        MyAdd.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.MyAdd:
                Intent intent = new Intent(getActivity(), Main3Activity.class);
                getActivity().startActivity(intent);
                break;
        }
    }
}

資料庫的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".fragment.SqliteFragment">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="資料庫資料展示"
            android:textSize="30sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:text="新增"
            android:textSize="22sp"
            android:id="@+id/MyAdd"/>
    </RelativeLayout>

    <com.example.xlistviewflush.view.XListView
        android:id="@+id/MySqlListView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></com.example.xlistviewflush.view.XListView>


</LinearLayout>

資料庫新增的Activity

package com.bwie.administrator.zhoukaominione;

import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.bwie.administrator.zhoukaominione.sqlhelper.SQLiteHeleper;

public class Main2Activity extends Activity implements View.OnClickListener {

    private EditText Name;
    private EditText Pwd;
    private Button queding;
    private SQLiteDatabase database;
    private SQLiteHeleper sqLiteDatabase;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initView();
        sqLiteDatabase = new SQLiteHeleper(this);
        database = sqLiteDatabase.getWritableDatabase();
    }

    private void initView() {
        Name = (EditText) findViewById(R.id.Name);
        Pwd = (EditText) findViewById(R.id.Pwd);
        queding = (Button) findViewById(R.id.queding);
        queding.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.queding:
                String name = Name.getText().toString();
                String pwd = Pwd.getText().toString();
                ContentValues values = new ContentValues();
                values.put("username", name);
                values.put("userpwd", pwd);
                database.insert("user", null, values);
                finish();
                break;
        }
    }

}

新增的xml佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".Main2Activity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:gravity="center_horizontal"
        android:text="新增資料"
        android:textSize="26sp" />

    <EditText
        android:id="@+id/Name"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="請輸入要新增的賬戶" />

    <EditText
        android:id="@+id/Pwd"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="請輸入要新增的密碼" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="確定"
        android:id="@+id/queding"/>

</LinearLayout>

修改

package com.bwie.administrator.zhoukaominione;

import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.bwie.administrator.zhoukaominione.dao.MyDao;
import com.bwie.administrator.zhoukaominione.sqlhelper.SQLiteHeleper;

public class Main3Activity extends AppCompatActivity implements View.OnClickListener {

    private EditText xName;
    private EditText xPwd;
    private Button xqueding;
    private MyDao dao;
    private SQLiteDatabase database;
    private SQLiteHeleper sqLiteDatabase;
    private String name;
    private String pwd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        sqLiteDatabase = new SQLiteHeleper(this);
        database = sqLiteDatabase.getWritableDatabase();
        initView();
        //接收修改傳過來的的值
        Intent intent = getIntent();
        name =  intent.getStringExtra("username");
        pwd = intent.getStringExtra("userpwd");
        xName.setText(name);
        xPwd.setText(pwd);

    }

    private void initView() {
        xName = (EditText) findViewById(R.id.xName);
        xPwd = (EditText) findViewById(R.id.xPwd);
        xqueding = (Button) findViewById(R.id.xqueding);

        xqueding.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.xqueding:
                String name1 = xName.getText().toString().trim();
                String pwd1 = xPwd.getText().toString().trim();
                ContentValues values = new ContentValues();
                values.put("username",name1);
                values.put("userpwd",pwd1);
                database.update("user",values,"username=?",new String[]{name});
                finish();
                break;
        }
    }

}

修改的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".Main3Activity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:gravity="center_horizontal"
        android:text="修改資料"
        android:textSize="26sp" />

    <EditText
        android:id="@+id/xName"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:gravity="center" />

    <EditText
        android:id="@+id/xPwd"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:gravity="center" />

    <Button
        android:id="@+id/xqueding"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="確定" />

</LinearLayout>

然後,以上