侧拉菜单
一个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>
然后,以上