HTTP请求+数据库
<!-- flowchart 箭头图标 勿删 --><p>//MainActivity</p><pre>package com.example.week1_test;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RadioGroup;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends FragmentActivity {
private ViewPager viewPager;
private Listlist;
private RadioGroup group;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化list
list = new ArrayList<>();
Fragmentone fragmentone = new Fragmentone();
Fragmenttwo fragmenttwo = new Fragmenttwo();
Fragmentthree fragmentthree = new Fragmentthree();
//添加数据
list.add(fragmentone);
list.add(fragmenttwo);
list.add(fragmentthree);
//viewpager
viewPager = findViewById(R.id.pager);
group = findViewById(R.id.group);
//滑动监听
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
});
//滑动 按钮改变
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
switch (i){
case 0:
group.check(R.id.R1);
break;
case 1:
group.check(R.id.R2);
break;
case 2:
group.check(R.id.R3);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
//点击按钮切换页面
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.R1:
viewPager.setCurrentItem(0);
break;
case R.id.R2:
viewPager.setCurrentItem(1);
break;
case R.id.R3:
viewPager.setCurrentItem(2);
break;
}
}
});
}
}</pre><p>//Fragmentone</p><pre>package com.example.week1_test;
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
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;
import android.view.animation.Animation;
import android.widget.ListView;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
public class Fragmentone extends Fragment {
private ListView listView;
private AsyncTask<String, Void, List> asyncTask;
private MySqLiteHelper mySqLiteHelper;
private SQLiteDatabase database;
private MyDataAdapter madapter;
private Bean fromJson;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getActivity(),R.layout.fragmentone,null);
//加载资源ID
listView = view.findViewById(R.id.lv_contents);
//实例化加载
madapter = new MyDataAdapter(getActivity());
listView.setAdapter(madapter);
//接口加载方法
getData();
//数据库操作
mySqLiteHelper = new MySqLiteHelper(getActivity());
database = mySqLiteHelper.getReadableDatabase();
return view;
}
//接口地址
private String UrlStr="http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
//方法
@SuppressLint("StaticFieldLeak")
private void getData(){
asyncTask = new AsyncTask<String, Void, List>() {
@Override
protected ListdoInBackground(String... strings) {
//开始解析数据
try {
//得到路径
URL url = new URL(strings[0]);
//获得连接
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//设置超时以及请求方式
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
//获取相应码
int responseCode = urlConnection.getResponseCode();
//判断
if (responseCode == 200){
//获取数据
InputStream inputStream = urlConnection.getInputStream();
//字符流转换
String json = string2Stream(inputStream);
//获取数据
fromJson = new Gson().fromJson(json, Bean.class);
return fromJson.getData();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(ListdataBeans) {
madapter.setList(dataBeans);
//添加数据库
for (int i = 0; i < dataBeans.size()-1; i++) {
ContentValues values = new ContentValues();
values.put("news_id",dataBeans.get(i).getNews_id());
values.put("news_title",dataBeans.get(i).getNews_title());
database.insert("data",null,values);
}
}
}.execute(UrlStr);
}
private String string2Stream(InputStream inputStream) throws IOException {
//获得字符流
InputStreamReader isr = new InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
for (String tmp = br.readLine(); tmp != null ; tmp = br.readLine()){
sb.append(tmp);
}
//发送数据
return sb.toString();
}
}</pre><p>//适配器 页面</p><pre>package com.example.week1_test;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MyDataAdapter extends BaseAdapter {
private Context context;
private Listlist;
public MyDataAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
public ListgetList() {
return list;
}
public void setList(Listlist) {
this.list = list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public ListgetItem(int position) {
Listitem = (List) list.get(position);
return item;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null){
//加载视图
convertView = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
holder = new ViewHolder();
holder.news_id = convertView.findViewById(R.id.news_id);
holder.news_title = convertView.findViewById(R.id.news_title);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.news_id.setText(list.get(position).getNews_id());
holder.news_title.setText(list.get(position).getNews_title());
return convertView;
}
class ViewHolder{
TextView news_id,news_title;
}
}</pre><p>//bean类</p><pre>package com.example.week1_test;
import java.util.List;
public class Bean {
private int status;
private String info;
private Listdata;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public ListgetData() {
return data;
}
public void setData(Listdata) {
this.data = data;
}
public static class DataBean {
private String news_id;
private String news_title;
private String news_summary;
private String pic_url;
public String getNews_id() {
return news_id;
}
public void setNews_id(String news_id) {
this.news_id = news_id;
}
public String getNews_title() {
return news_title;
}
public void setNews_title(String news_title) {
this.news_title = news_title;
}
public String getNews_summary() {
return news_summary;
}
public void setNews_summary(String news_summary) {
this.news_summary = news_summary;
}
public String getPic_url() {
return pic_url;
}
public void setPic_url(String pic_url) {
this.pic_url = pic_url;
}
}
}</pre><p>//数据库</p><pre>package com.example.week1_test;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MySqLiteHelper extends SQLiteOpenHelper {
public MySqLiteHelper(@androidx.annotation.Nullable Context context) {
super(context, "Data.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table data( id integer primary key autoincrement," +
"news_id text," +
"news_title text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}</pre>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇:HIDL学习笔记之HIDL C++(第二天)
- 下一篇:Java SE 第六章