项目实战:四、判断有网没网 并解析数据添加到数据库

1.这个比较复杂 代码比较多发的这个是其中的一个页面 我就简单写一下思路吧 如果要往数据库里面添加的话 先创建一个数据库 然后在Dao层写增删改查方法 下面开始写页面展示内容 内容太多我也不多说了

public class Fragment01 extends Fragment {
            

String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
List<JsonBean.DataBean> list = new ArrayList<JsonBean.DataBean>();
private ListView listview;
private MyListViewAdapter adapter;
private Dao dao;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment01, container, false);
    //加载组件
    listview = view.findViewById(R.id.listview);

    //创建Dao对象
    dao = new Dao(getActivity());
    //适配器
    adapter = new MyListViewAdapter(getActivity(),list);
    listview.setAdapter(adapter);

    //判断是否联网
    Boolean resault = NetStateUtil.getResault(getActivity());
    //有网
    if(resault){
        //创建异步管理类对象,调用子线程方法,发送接口
        MyAsyncTask myAsyncTask = new MyAsyncTask();
        myAsyncTask.execute(urlString);
    }else{

        Toast.makeText(getActivity(),"当前无网络",Toast.LENGTH_SHORT).show();
    }


    return view;
}


//异步管理类
class MyAsyncTask extends AsyncTask<String,Void,String> {

    //子线程方法,参数为数组
    @Override
    protected String doInBackground(String... strings) {
        //获取网络数据
        String str = NetUtil.getInter(strings[0]);
        //返回给主线程方法
        return str;
    }

    //UI主线程方法
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        //解析
        Gson gson = new Gson();
        JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
        List<JsonBean.DataBean> data = jsonBean.getData();
        //将解析出来的集合添加到自己的集合中
        Log.i("zcq", "解析集合数据: "+data.toString());
        list.addAll(data);
        //添加到数据库
        for (int i=0;i<list.size();i++){

            ContentValues values = new ContentValues();
            values.put("news_title",list.get(i).getNews_title());
            values.put("news_summary",list.get(i).getNews_summary());
            values.put("pic_url",list.get(i).getPic_url());

            long add = dao.add("news", null, values);
            if(add>0){

                Log.i("zcq", "添加数据库成功: "+add);
            }
        }
        //刷新适配器
        adapter.notifyDataSetChanged();

    }
}

}

2.

这个是网络解析数据
public class NetUtil {

public static String getInter(String string) {

    try {
        //网络解析数据
        URL url = new URL(string);
        try {
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            int responseCode = connection.getResponseCode();
            if(responseCode==200){

                InputStream inputStream = connection.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader reader = new BufferedReader(inputStreamReader);
                String read = "";
                String str = "";
                while((read=reader.readLine())!=null){
                    str+=read;

                }
                return str;

            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    return null;
}

}

3.

网络图片展示到列表上
public class MApp extends Application {
@Override
public void onCreate() {
super.onCreate();

    ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build();
    ImageLoader instance = ImageLoader.getInstance();
    instance.init(configuration);
}

}
4.

这个是列表展示和网络请求图片的适配器
public class MyListViewAdapter extends BaseAdapter {
private Activity context;
private List<JsonBean.DataBean> list;
private ViewHolder holder;

public MyListViewAdapter(Activity context, List<JsonBean.DataBean> list) {
    this.context = context;
    this.list = list;
}

@Override
public int getCount() {`在这里插入代码片`
    return list.size();
}

@Override
public Object getItem(int i) {
    return null;
}

@Override
public long getItemId(int i) {
    return 0;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    if(view==null){
        view= View.inflate(context, R.layout.listview, null);
        holder = new ViewHolder();
        holder.listview_title = view.findViewById(R.id.listview_title);
        holder.listview_img = view.findViewById(R.id.listview_img);
        view.setTag(holder);
    }else{

        holder = (ViewHolder) view.getTag();
    }
    JsonBean.DataBean dataBean = list.get(i);
    holder.listview_title.setText(dataBean.getNews_title());
    ImageLoader instance = ImageLoader.getInstance();
    instance.displayImage(dataBean.getPic_url(),holder.listview_img);


    return view;
}

class ViewHolder{

    private TextView listview_title;
    private ImageView listview_img;
}

}
 

猜你喜欢

转载自blog.csdn.net/qq_42436644/article/details/85303070