主布局
<?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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:id="@+id/dl">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/pager"></android.support.v4.view.ViewPager>
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tab"
></android.support.design.widget.TabLayout>
</LinearLayout>
<LinearLayout
android:layout_gravity="left"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F0F"
android:orientation="vertical">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:src="@mipmap/ic_launcher"
android:padding="30dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="12345"
android:layout_gravity="center"
android:padding="30dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="12345"
android:padding="30dp"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
frag1
<?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="vertical">
<com.youth.banner.Banner
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:id="@+id/banner"></com.youth.banner.Banner>
<GridView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4"
android:numColumns="3"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:id="@+id/gridview"></GridView>
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4"
android:id="@+id/pull"></com.handmark.pulltorefresh.library.PullToRefreshListView>
</LinearLayout>
item
<?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:layout_width="200dp"
android:src="@mipmap/ic_launcher"
android:layout_height="200dp"
android:id="@+id/img"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tx1"
android:text="123456"
android:padding="30dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tx2"
android:text="123456"
android:padding="30dp"/>
</LinearLayout>
</LinearLayout>
item1
<?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"
>
baseActivity
package com.bawei.day15;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 08:49:05
* @Description:
*/
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(bindLayout());
initView();
initData();
initListenner();
}
protected abstract int bindLayout();
protected abstract void initView();
protected abstract void initData();
protected abstract void initListenner();
}
BaseFragment
package com.bawei.day15;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 08:48:54
* @Description:
*/
public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(bindLayout(), container, false);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initView();
initData();
initListenner();
}
protected abstract int bindLayout();
protected abstract void initView();
protected abstract void initData();
protected abstract void initListenner();
}
MainActivity
package com.bawei.day15;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.bawei.day15.adapter.Myadapter;
import com.bawei.day15.frag.Frag1;
import com.bawei.day15.frag.Frag2;
import com.bawei.day15.http.Http;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends BaseActivity {
private List<Fragment>list=new ArrayList<>() ;
private String[]s={"首页","我的"};
private ViewPager pager;
private TabLayout tab;
private DrawerLayout dl;
@Override
protected int bindLayout() {
return R.layout.activity_main;
}
@Override
protected void initView() {
pager = findViewById(R.id.pager);
tab = findViewById(R.id.tab);
dl = findViewById(R.id.dl);
}
@Override
protected void initData() {
list.add(new Frag1());
list.add(new Frag2());
Myadapter myadapter = new Myadapter(getSupportFragmentManager(),s,list);
pager.setAdapter(myadapter);
tab.setupWithViewPager(pager);
}
@Override
protected void initListenner() {
}
}
Http
package com.bawei.day15.http;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 10:35:12
* @Description:
*/
public class Http {
public static boolean isConnectionWork(Context context) {
ConnectivityManager systemService = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = systemService.getActiveNetworkInfo();
if (info != null) {
return info.isConnected();
}
return false;
}
public static String requestGet(String s) {
try {
URL url = new URL(s);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
int code = connection.getResponseCode();
if (code == 200) {
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf-8"));
String str = "";
StringBuilder builder = new StringBuilder();
while ((str = reader.readLine()) != null) {
builder.append(str);
}
return builder.toString();
}
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public interface Call {
void getDate(String s1);
}
public static void MyAsyncTask(String url, final Call call){
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... strings) {
return Http.requestGet(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
call.getDate(s);
}
}.execute(url);
}
}
Frag1
package com.bawei.day15.frag;
import android.content.Context;
import android.view.View;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import com.bawei.day15.BaseFragment;
import com.bawei.day15.R;
import com.bawei.day15.adapter.YouAdapter;
import com.bawei.day15.bean.JsonBean;
import com.bawei.day15.bean.MyData;
import com.bawei.day15.http.Http;
import com.bawei.day15.sql.Mydao;
import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.youth.banner.Banner;
import com.youth.banner.loader.ImageLoader;
import java.util.ArrayList;
import java.util.List;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 08:53:54
* @Description:
*/
public class Frag1 extends BaseFragment {
private Banner banner;
private List<String> list = new ArrayList<String>();
private PullToRefreshListView pull;
private List<MyData>list1=new ArrayList<MyData>();
private int page=1;
private String url = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
private YouAdapter youAdapter;
private YouAdapter youAdapter1;
private GridView gridview;
private Mydao dao;
@Override
protected int bindLayout() {
return R.layout.frag1;
}
@Override
protected void initView() {
banner = getActivity().findViewById(R.id.banner);
pull = getActivity().findViewById(R.id.pull);
pull.setMode(PullToRefreshListView.Mode.BOTH);
pull.setScrollingWhileRefreshingEnabled(true);
gridview = getActivity().findViewById(R.id.gridview);
}
@Override
protected void initData() {
dao=new Mydao(getActivity());
lbt();
youAdapter1 = new YouAdapter(list1,getActivity());
gridview.setAdapter(youAdapter1);
youAdapter = new YouAdapter(list1,getActivity());
pull.setAdapter(youAdapter);
if(Http.isConnectionWork(getActivity())){
getDa(page);
}else{
Toast.makeText(getActivity(), "请检查网络连接", Toast.LENGTH_SHORT).show();
//查询数据库
String s = dao.selectData(url + page);
json(s);
}
}
@Override
protected void initListenner() {
pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
list1.clear();
int page=1;
getDa(page);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
page++;
getDa(page);
}
});
}
private void lbt() {
list.add("https://ws1.sinaimg.cn/large/0065oQSqly1g04lsmmadlj31221vowz7.jpg");
list.add("https://ws1.sinaimg.cn/large/0065oQSqgy1fze94uew3jj30qo10cdka.jpg");
list.add("https://ws1.sinaimg.cn/large/0065oQSqly1fytdr77urlj30sg10najf.jpg");
if (Http.isConnectionWork(getActivity())) {
banner.isAutoPlay(true).setDelayTime(2000).setImages(list).setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
}).start();
} else {
Toast.makeText(getActivity(), "无连接", Toast.LENGTH_SHORT).show();
}
}
private void json(String s){
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
list1.addAll(jsonBean.getData());
youAdapter.notifyDataSetChanged();
youAdapter1.notifyDataSetChanged();
pull.onRefreshComplete();
}
private void getDa(int p){
final String s3=url+p;
Http.MyAsyncTask(s3, new Http.Call() {
@Override
public void getDate(String s1) {
dao.insertData(s3,s1);
//解析
json(s1);
}
});
}
}
MyAdapter
package com.bawei.day15.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 com.bawei.day15.MainActivity;
import java.util.List;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 08:58:41
* @Description:
*/
public class Myadapter extends FragmentPagerAdapter {
private String[]s;
private List<Fragment>list;
public Myadapter(FragmentManager fm, String[] s, List<Fragment> list) {
super(fm);
this.s = s;
this.list = list;
}
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return s[position];
}
}
YouAdapter
package com.bawei.day15.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bawei.day15.R;
import com.bawei.day15.bean.MyData;
import com.bumptech.glide.Glide;
import java.util.List;
import jp.wasabeef.glide.transformations.BitmapTransformation;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import static com.bumptech.glide.request.RequestOptions.bitmapTransform;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 10:01:08
* @Description:
*/
public class YouAdapter extends BaseAdapter {
private List<MyData> list;
private Context context;
public YouAdapter(List<MyData> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Haode1 hd = new Haode1();
if (convertView == null) {
convertView = View.inflate(context, R.layout.item, null);
hd.img = convertView.findViewById(R.id.img);
hd.tx1 = convertView.findViewById(R.id.tx1);
hd.tx2 = convertView.findViewById(R.id.tx2);
convertView.setTag(hd);
}else{
hd= (Haode1) convertView.getTag();
}
MyData myData = list.get(position);
hd.tx1.setText(myData.getNews_summary());
hd.tx2.setText(myData.getNews_summary());
/*
.apply(bitmapTransform(new RoundedCornersTransformation(200, 0, RoundedCornersTransformation.CornerType.ALL)))
*/
Glide.with(context).load(myData.getPic_url()) .apply(bitmapTransform(new RoundedCornersTransformation(200, 0, RoundedCornersTransformation.CornerType.ALL))).into(hd.img);
return convertView;
}
class Haode1 {
ImageView img;
TextView tx1;
TextView tx2;
}
}
YouAdapter1
package com.bawei.day15.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bawei.day15.R;
import com.bawei.day15.bean.MyData;
import com.bumptech.glide.Glide;
import java.util.List;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import static com.bumptech.glide.request.RequestOptions.bitmapTransform;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 10:01:08
* @Description:
*/
public class YouAdapter1 extends BaseAdapter {
private List<MyData> list;
private Context context;
public YouAdapter1(List<MyData> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Haode1 hd = new Haode1();
if (convertView == null) {
convertView = View.inflate(context, R.layout.item, null);
hd.img = convertView.findViewById(R.id.img);
convertView.setTag(hd);
}else{
hd= (Haode1) convertView.getTag();
}
MyData myData = list.get(position);
/*
.apply(bitmapTransform(new RoundedCornersTransformation(200, 0, RoundedCornersTransformation.CornerType.ALL)))
*/
Glide.with(context).load(myData.getPic_url()) .apply(bitmapTransform(new RoundedCornersTransformation(200, 0, RoundedCornersTransformation.CornerType.ALL))).into(hd.img);
return convertView;
}
class Haode1 {
ImageView img;
TextView tx1;
TextView tx2;
}
}
MyData
package com.bawei.day15.bean;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 09:49:35
* @Description:
*/
public class MyData {
/* "news_id": "13811",
"news_summary": "6月17—20日,“2016成都深港澳台嘉年华会”(简称嘉年华会)将在成都世纪城国际会展中心举办。其主办方励展华博借力旗",
"news_title": "深港澳台千里连线,嘉年华会今夏入川",
"pic_url": "http://f.*/
private String news_id;
private String news_summary;
private String news_title;
private String pic_url;
public MyData(String news_id, String news_summary, String news_title, String pic_url) {
this.news_id = news_id;
this.news_summary = news_summary;
this.news_title = news_title;
this.pic_url = pic_url;
}
public String getNews_id() {
return news_id;
}
public void setNews_id(String news_id) {
this.news_id = news_id;
}
public String getNews_summary() {
return news_summary;
}
public void setNews_summary(String news_summary) {
this.news_summary = news_summary;
}
public String getNews_title() {
return news_title;
}
public void setNews_title(String news_title) {
this.news_title = news_title;
}
public String getPic_url() {
return pic_url;
}
public void setPic_url(String pic_url) {
this.pic_url = pic_url;
}
@Override
public String toString() {
return "MyData{" +
"news_id='" + news_id + '\'' +
", news_summary='" + news_summary + '\'' +
", news_title='" + news_title + '\'' +
", pic_url='" + pic_url + '\'' +
'}';
}
}
JsonBean
package com.bawei.day15.bean;
import java.util.List;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 09:51:19
* @Description:
*/
public class JsonBean {
private List<MyData>data;
public JsonBean(List<MyData> data) {
this.data = data;
}
public List<MyData> getData() {
return data;
}
public void setData(List<MyData> data) {
this.data = data;
}
@Override
public String toString() {
return "JsonBean{" +
"data=" + data +
'}';
}
}
MyDao
package com.bawei.day15.sql;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.text.GetChars;
import com.bawei.day15.bean.MyData;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 16:30:32
* @Description:
*/
public class Mydao {
private final MySql mySql;
private String table = "news";
public Mydao(Context context){
mySql = new MySql(context);
}
public void insertData(String url, String json) {
/*SQLiteDatabase database = mySql.getWritableDatabase();
//先删除数据
database.delete(table,"url=?",new String[]{url});
//添加数据
ContentValues values = new ContentValues();
values.put("url",url);
values.put("json",json);
database.insert(table,null,values);*/
SQLiteDatabase database = mySql.getWritableDatabase();
//先刪除數據庫
database.delete(table,"url=?",new String[]{url});
//添加數據庫
ContentValues values = new ContentValues();
values.put("url",url);
values.put("json",json);
database.insert(table,null,values);
}
//查询数据库
public String selectData(String url){
/* String json = "";
SQLiteDatabase database = mySql.getWritableDatabase();
Cursor cursor = database.query(table, null, "url=?", new String[]{url}, null, null, null);
while (cursor.moveToNext()){
json = cursor.getString(cursor.getColumnIndex("json"));
}*/
/* return json;*/
String json="";
SQLiteDatabase database = mySql.getWritableDatabase();
Cursor query = database.query(table, null, "url=?", new String[]{url}, null, null, null);
while (query.moveToNext()){
json=query.getString(query.getColumnIndex("json"));
}
return json;
}
}
MySql
package com.bawei.day15.sql;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* @Auther: 孙鹏飞
* @Date: 2019/3/1 16:30:20
* @Description:
*/
public class MySql extends SQLiteOpenHelper {
public MySql(Context context) {
super(context, "bawei.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table news (url varchar(20),json varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}