1. 程式人生 > >專案實戰:四、判斷有網沒網 並解析資料新增到資料庫

專案實戰:四、判斷有網沒網 並解析資料新增到資料庫

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;
}

}