Android : tablayout +側滑選單 + 豎立的tablayout +資料庫增刪改查+XListView+PullToRefresh 綜合
阿新 • • 發佈:2018-12-04
側拉選單
一個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>
然後,以上