HTTP请求+数据库

本篇博客详细介绍了在安卓应用中实现分屏显示的方法,通过ViewPager和FragmentPagerAdapter组件,实现了不同Fragment之间的切换和数据展示。同时,深入探讨了使用AsyncTask进行后台数据加载的流程,包括网络请求、数据解析及数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//MainActivity

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 List<Fragment> list;
    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;
                }
            }
        });
    }
}

//Fragmentone

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<Bean.DataBean>> 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<Bean.DataBean>>() {



            @Override
            protected List<Bean.DataBean> doInBackground(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(List<Bean.DataBean> dataBeans) {
                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();
    }
}

//适配器 页面

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 List<Bean.DataBean> list;

    public MyDataAdapter(Context context) {
        this.context = context;
        list = new ArrayList<>();
    }


    public List<Bean.DataBean> getList() {
        return list;
    }

    public void setList(List<Bean.DataBean> list) {
        this.list = list;
        notifyDataSetChanged();
    }

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

    @Override
    public List<Bean.DataBean> getItem(int position) {
        List<Bean.DataBean> item = (List<Bean.DataBean>) 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;
    }
}

//bean类

package com.example.week1_test;

import java.util.List;

public class Bean {



    private int status;
    private String info;
    private List<DataBean> data;

    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 List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        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;
        }
    }
}

//数据库

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) {

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值