数据库展示数据

                                 <----布局----->
                                 <?xml version="1.0" encoding="utf-8"?>
                                <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                    xmlns:tools="http://schemas.android.com/tools"
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent">

                                    <ListView
                                        android:id="@+id/list_view"
                                        android:layout_width="match_parent"
                                        android:layout_height="match_parent"/>
                                </RelativeLayout>

                            <?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"
                                android:padding="10dp">

                                <ImageView
                                    android:id="@+id/image_view"
                                    android:layout_width="100dp"
                                    android:layout_height="100dp" />

                                <TextView
                                    android:id="@+id/text_title"
                                    android:layout_width="match_parent"
                                    android:layout_height="wrap_content" />

                            </LinearLayout>

                        <-----主页面------->

                           package com.example.a18_json_cache;

                        import android.content.Context;
                        import android.net.ConnectivityManager;
                        import android.net.NetworkInfo;
                        import android.os.AsyncTask;
                        import android.os.Bundle;
                        import android.support.v7.app.AppCompatActivity;
                        import android.widget.ListView;
                        import android.widget.Toast;

                        import com.google.gson.Gson;

                        import java.io.BufferedReader;
                        import java.io.InputStream;
                        import java.io.InputStreamReader;
                        import java.net.HttpURLConnection;
                        import java.net.URL;

                        public class MainActivity extends AppCompatActivity {

                            private String path = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10";
                            private CacheDao cacheDao;
                            private ListView listView;

                            @Override
                            protected void onCreate(Bundle savedInstanceState) {
                                super.onCreate(savedInstanceState);
                                setContentView(R.layout.activity_main);

                                listView = (ListView) findViewById(R.id.list_view);


                                cacheDao = new CacheDao(MainActivity.this);

                                //读取数据库中存的json字符串...根据那个路径
                                String json = cacheDao.getJson(path);
                                //判断读取的字符串是否为null,,,不是空,解析设置显示,,,空,访问网络请求json数据,添加到数据库,解析展示数据
                                if (json != null){
                                    //解析,,,展示
                                    parseJson(json);

                                }else {
                                    //访问网络,获取数据
                                    getDataFromNet();
                                }
                            }

                            /**
                             * 获取网络上数据
                             */
                            private void getDataFromNet() {

                                //判断,,,有网
                                if (isNetworkConnected(MainActivity.this)){
                                    AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {
                                        @Override
                                        protected String doInBackground(Void... voids) {
                                            try {
                                                URL url = new URL(path);

                                                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                                                //设置
                                                connection.setRequestMethod("GET");
                                                connection.setReadTimeout(5000);
                                                connection.setConnectTimeout(5000);

                                                //获取
                                                int responseCode = connection.getResponseCode();
                                                if (responseCode == 200){
                                                    InputStream inputStream = connection.getInputStream();

                                                    //转成json字符串
                                                    String s = streamToString(inputStream,"utf-8");

                                                    //把字符串存入数据库,,,缓存下来
                                                    cacheDao.saveJson(path,s);
                                                    return s;
                                                }

                                            } catch (Exception e) {
                                                e.printStackTrace();
                                            }

                                            return null;
                                        }

                                        @Override
                                        protected void onPostExecute(String s) {
                                            //解析展示数据
                                            parseJson(s);
                                        }
                                    };

                                    asyncTask.execute();
                                }else {
                                    Toast.makeText(MainActivity.this,"网络不可用,请检查网络",Toast.LENGTH_SHORT).show();
                                }



                            }

                            /**
                             * 解析字符串进行展示数据
                             * @param json
                             */
                            private void parseJson(String json) {
                                Gson gson = new Gson();
                                DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);

                                //设置适配器
                                if (dataDataBean != null && dataDataBean.getNewslist() != null){

                                    NewsAdapter newsAdapter = new NewsAdapter(MainActivity.this, dataDataBean.getNewslist());
                                    listView.setAdapter(newsAdapter);

                                }


                            }

                            private String streamToString(InputStream inputStream,String charset) {
                                try {
                                    InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);

                                    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                                    String s = null;
                                    StringBuilder builder = new StringBuilder();
                                    while ((s = bufferedReader.readLine()) != null){
                                        builder.append(s);
                                    }

                                    bufferedReader.close();
                                    return builder.toString();

                                } catch (Exception e) {
                                    e.printStackTrace();
                                }

                                return  null;
                            }

                            /**
                             * 判断网络状态
                             * @param context
                             * @return
                             */
                            private   boolean isNetworkConnected(Context context) {
                                if (context != null) {
                                    // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
                                    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                                    // 获取NetworkInfo对象
                                    NetworkInfo networkInfo = manager.getActiveNetworkInfo();
                                    //判断NetworkInfo对象是否为空
                                    if (networkInfo != null)
                                        return networkInfo.isAvailable();
                                }
                                return false;
                            }
                        }

                    <----适配器---->
                    package com.example.a18_json_cache;

                    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 java.util.List;

                    /**
                     * @author Dash
                     * @date 2017/9/19
                     * @description:
                     */
                    public class NewsAdapter extends BaseAdapter {
                        Context context;
                        List<DataDataBean.NewslistBean> list;

                        public NewsAdapter(Context context, List<DataDataBean.NewslistBean> list) {
                            this.context = context;
                            this.list = list;
                        }

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

                        @Override
                        public Object getItem(int i) {
                            return list.get(i);
                        }

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

                        @Override
                        public View getView(int i, View view, ViewGroup viewGroup) {
                            ViewHolder holder;
                            if (view == null){
                                view = View.inflate(context,R.layout.item_layout,null);
                                holder = new ViewHolder();

                                holder.imageView = view.findViewById(R.id.image_view);
                                holder.textView = view.findViewById(R.id.text_title);

                                view.setTag(holder);

                            }else {
                                holder = (ViewHolder) view.getTag();
                            }

                            holder.textView.setText(list.get(i).getTitle());

                            return view;
                        }

                        private class ViewHolder{
                            ImageView imageView;
                            TextView textView;
                        }
                    }


                 <-----建立数据库----->
                 package com.example.a18_json_cache;

                import android.content.Context;
                import android.database.sqlite.SQLiteDatabase;
                import android.database.sqlite.SQLiteOpenHelper;

                /**
                 * @author Dash
                 * @date 2017/9/19
                 * @description:
                 */
                public class CacheHelper extends SQLiteOpenHelper {
                    public CacheHelper(Context context) {
                        super(context, "bawei.db", null, 1);
                    }

                    @Override
                    public void onCreate(SQLiteDatabase sqLiteDatabase) {
                        //创建表结构,,,jsoncache,,,id,url,json(,date时间)
                        sqLiteDatabase.execSQL("create table jsoncache(id integer primary key autoincrement,url text not null,json text not null)");
                    }

                    @Override
                    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

                    }
                }


        <---数据库 增删改----->
          package com.example.a18_json_cache;

        import android.content.ContentValues;
        import android.content.Context;
        import android.database.Cursor;
        import android.database.sqlite.SQLiteDatabase;

        /**
         * @author Dash
         * @date 2017/9/19
         * @description:
         */
        public class CacheDao {

            private CacheHelper helper;

            public CacheDao(Context context) {

                helper = new CacheHelper(context);
            }

            /**
             * 存一个json串
             */
            public void saveJson(String url,String json){
                SQLiteDatabase database = helper.getWritableDatabase();

                //先删除url对应的数据
                database.delete("jsoncache","url=?",new String[]{url});
                //再存进去
                ContentValues values = new ContentValues();

                values.put("url",url);
                values.put("json",json);

                database.insert("jsoncache",null,values);

                database.close();
            }

            /**
             * 根据url路径取出存入的json字符串
             */
            public String getJson(String url){
                SQLiteDatabase database = helper.getWritableDatabase();

                Cursor cursor = database.query("jsoncache", new String[]{"json"}, "url=?", new String[]{url}, null, null, null);

                if (cursor.moveToNext()){
                    String json = cursor.getString(cursor.getColumnIndex("json"));

                    return json;
                }

                cursor.close();
                database.close();

                return null;
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值