diff --git a/com1614080901217/app/src/main/java/com/example/admin/com1614080901217/Com1614080901217.java b/com1614080901217/app/src/main/java/com/example/admin/com1614080901217/Com1614080901217.java index 9cd9be338..ae07f94e7 100644 --- a/com1614080901217/app/src/main/java/com/example/admin/com1614080901217/Com1614080901217.java +++ b/com1614080901217/app/src/main/java/com/example/admin/com1614080901217/Com1614080901217.java @@ -11,14 +11,23 @@ import android.widget.ArrayAdapter; import android.widget.ListView; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + public class Com1614080901217 extends AppCompatActivity { private List listContent; private List bianQianList; private SQLiteDatabase writableDatabase; private BianQian bianQian; + private ArrayAdapter adapter; @Override @@ -27,16 +36,17 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_com1614080901217); - //initDB(); + //initDB(); initData(); + initDataByJson(); ListView listView = (ListView) findViewById(R.id.bianqian_list); - ArrayAdapter adapter = new ArrayAdapter<>(this, R.layout.support_simple_spinner_dropdown_item, listContent); + adapter = new ArrayAdapter<>(this, R.layout.support_simple_spinner_dropdown_item, listContent); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int i, long l) { Intent intent = new Intent(Com1614080901217.this, ContentActivity.class); - intent.putExtra("content",bianQianList.get(i).getContent()); + intent.putExtra("content", bianQianList.get(i).getContent()); startActivity(intent); } @@ -45,6 +55,36 @@ public void onItemClick(AdapterView adapterView, View view, int i, long l) { } + private void initDataByJson() { + new Thread(new Runnable() { + @Override + public void run() { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder().url("https://raw.githubusercontent.com/MoxinHuoHuo/android-labs-2018/master/com1614080901217/jsonFile.json").build(); + try { + Response execute = okHttpClient.newCall(request).execute(); + String jsonData = execute.body().string(); + Gson gson = new Gson(); + List newData = gson.fromJson(jsonData, new TypeToken>() { + }.getType()); + bianQianList.addAll(newData); + List strings = initTitle(newData); + listContent.addAll(strings); + runOnUiThread(new Runnable() { + @Override + public void run() { + adapter.notifyDataSetChanged(); + } + }); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + }).start(); + } + private void initDB() { DatabaseHelper databaseHelper = new DatabaseHelper(this); @@ -61,7 +101,7 @@ private void initDB() { private void initData() { bianQianList = new ArrayList<>(); - listContent = new ArrayList<>(); + listContent = new ArrayList<>(); DatabaseHelper databaseHelper = new DatabaseHelper(this); writableDatabase = databaseHelper.getWritableDatabase(); Cursor cursor = writableDatabase.query("bianqian", null, null, null, null, null, null); @@ -82,4 +122,12 @@ private void initData() { } } + List initTitle(List newData + ) { + List newTitle = new ArrayList<>(); + for (int i = 0; i < newData.size(); i++) { + newTitle.add(newData.get(i).getTitle()); + } + return newTitle; + } } diff --git a/com1614080901217/jsonFile.json b/com1614080901217/jsonFile.json new file mode 100644 index 000000000..54cd1be87 --- /dev/null +++ b/com1614080901217/jsonFile.json @@ -0,0 +1,150 @@ +[{ + "id": 0, + "title": "来至网络请求的第的0条标题", + "content": "来至网络请求的第的0条内容" +}, +{ + "id": 1, + "title": "来至网络请求的第的1条标题", + "content": "来至网络请求的第的1条内容" +}, +{ + "id": 2, + "title": "来至网络请求的第的2条标题", + "content": "来至网络请求的第的2条内容" +}, +{ + "id": 3, + "title": "来至网络请求的第的3条标题", + "content": "来至网络请求的第的3条内容" +}, +{ + "id": 4, + "title": "来至网络请求的第的4条标题", + "content": "来至网络请求的第的4条内容" +}, +{ + "id": 5, + "title": "来至网络请求的第的5条标题", + "content": "来至网络请求的第的5条内容" +}, +{ + "id": 6, + "title": "来至网络请求的第的6条标题", + "content": "来至网络请求的第的6条内容" +}, +{ + "id": 7, + "title": "来至网络请求的第的7条标题", + "content": "来至网络请求的第的7条内容" +}, +{ + "id": 8, + "title": "来至网络请求的第的8条标题", + "content": "来至网络请求的第的8条内容" +}, +{ + "id": 9, + "title": "来至网络请求的第的9条标题", + "content": "来至网络请求的第的9条内容" +}, +{ + "id": 10, + "title": "来至网络请求的第的10条标题", + "content": "来至网络请求的第的10条内容" +}, +{ + "id": 11, + "title": "来至网络请求的第的11条标题", + "content": "来至网络请求的第的11条内容" +}, +{ + "id": 12, + "title": "来至网络请求的第的12条标题", + "content": "来至网络请求的第的12条内容" +}, +{ + "id": 13, + "title": "来至网络请求的第的13条标题", + "content": "来至网络请求的第的13条内容" +}, +{ + "id": 14, + "title": "来至网络请求的第的14条标题", + "content": "来至网络请求的第的14条内容" +}, +{ + "id": 15, + "title": "来至网络请求的第的15条标题", + "content": "来至网络请求的第的15条内容" +}, +{ + "id": 16, + "title": "来至网络请求的第的16条标题", + "content": "来至网络请求的第的16条内容" +}, +{ + "id": 17, + "title": "来至网络请求的第的17条标题", + "content": "来至网络请求的第的17条内容" +}, +{ + "id": 18, + "title": "来至网络请求的第的18条标题", + "content": "来至网络请求的第的18条内容" +}, +{ + "id": 19, + "title": "来至网络请求的第的19条标题", + "content": "来至网络请求的第的19条内容" +}, +{ + "id": 20, + "title": "来至网络请求的第的20条标题", + "content": "来至网络请求的第的20条内容" +}, +{ + "id": 21, + "title": "来至网络请求的第的21条标题", + "content": "来至网络请求的第的21条内容" +}, +{ + "id": 22, + "title": "来至网络请求的第的22条标题", + "content": "来至网络请求的第的22条内容" +}, +{ + "id": 23, + "title": "来至网络请求的第的23条标题", + "content": "来至网络请求的第的23条内容" +}, +{ + "id": 24, + "title": "来至网络请求的第的24条标题", + "content": "来至网络请求的第的24条内容" +}, +{ + "id": 25, + "title": "来至网络请求的第的25条标题", + "content": "来至网络请求的第的25条内容" +}, +{ + "id": 26, + "title": "来至网络请求的第的26条标题", + "content": "来至网络请求的第的26条内容" +}, +{ + "id": 27, + "title": "来至网络请求的第的27条标题", + "content": "来至网络请求的第的27条内容" +}, +{ + "id": 28, + "title": "来至网络请求的第的28条标题", + "content": "来至网络请求的第的28条内容" +}, +{ + "id": 29, + "title": "来至网络请求的第的29条标题", + "content": "来至网络请求的第的29条内容" +}] \ No newline at end of file diff --git a/com1614080901217/report6.md b/com1614080901217/report6.md new file mode 100644 index 000000000..1644c5a06 --- /dev/null +++ b/com1614080901217/report6.md @@ -0,0 +1,146 @@ +## 第六次实验报告 + #### 1.用到的库 + 1. OKhttp + 2. gson + ####2 .实验步骤 + 首先要用到json的源数据,先列出一部分 + ```json +[{ + "id": 0, + "title": "来至网络请求的第的0条标题", + "content": "来至网络请求的第的0条内容" +}, +{ + "id": 1, + "title": "来至网络请求的第的1条标题", + "content": "来至网络请求的第的1条内容" +}, +{ + "id": 2, + "title": "来至网络请求的第的2条标题", + "content": "来至网络请求的第的2条内容" +}, +{ + "id": 3, + "title": "来至网络请求的第的3条标题", + "content": "来至网络请求的第的3条内容" +}, +{ + "id": 4, + "title": "来至网络请求的第的4条标题", + "content": "来至网络请求的第的4条内容" +}, +{ + "id": 5, + "title": "来至网络请求的第的5条标题", + "content": "来至网络请求的第的5条内容" +}, +{ + "id": 6, + "title": "来至网络请求的第的6条标题", + "content": "来至网络请求的第的6条内容" +}, +{ + "id": 7, + "title": "来至网络请求的第的7条标题", + "content": "来至网络请求的第的7条内容" +}, +{ + "id": 8, + "title": "来至网络请求的第的8条标题", + "content": "来至网络请求的第的8条内容" +}, +{ + "id": 9, + "title": "来至网络请求的第的9条标题", + "content": "来至网络请求的第的9条内容" +}, +{ + "id": 10, + "title": "来至网络请求的第的10条标题", + "content": "来至网络请求的第的10条内容" +}, +{ + "id": 11, + "title": "来至网络请求的第的11条标题", + "content": "来至网络请求的第的11条内容" +}, +{ + "id": 12, + "title": "来至网络请求的第的12条标题", + "content": "来至网络请求的第的12条内容" +}, +{ + "id": 13, + "title": "来至网络请求的第的13条标题", + "content": "来至网络请求的第的13条内容" +}, +{ + "id": 14, + "title": "来至网络请求的第的14条标题", + "content": "来至网络请求的第的14条内容" +}, +{ + "id": 15, + "title": "来至网络请求的第的15条标题", + "content": "来至网络请求的第的15条内容" +}, +{ + "id": 16, + "title": "来至网络请求的第的16条标题", + "content": "来至网络请求的第的16条内容" +}, +{ + "id": 17, + "title": "来至网络请求的第的17条标题", + "content": "来至网络请求的第的17条内容" +}, +{ + "id": 18, + "title": "来至网络请求的第的18条标题", + "content": "来至网络请求的第的18条内容" +} +``` +然后就是从这个链接上获取json数据 +``` https://raw.githubusercontent.com/MoxinHuoHuo/android-labs-2018/master/com1614080901217/jsonFile.json ``` + + +![](https://github.com/MoxinHuoHuo/android-labs-2018/blob/master/com1614080901217/%E6%88%AA%E5%9B%BE/%E5%AE%9E%E9%AA%8C5.jpg) +![](https://github.com/MoxinHuoHuo/android-labs-2018/blob/master/com1614080901217/%E6%88%AA%E5%9B%BE/%E5%AE%9E%E9%AA%8C%E4%BA%94.jpg) +核心代码 +```java +private void initDataByJson() { + new Thread(new Runnable() { + @Override + public void run() { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder().url("https://raw.githubusercontent.com/MoxinHuoHuo/android-labs-2018/master/com1614080901217/jsonFile.json").build(); + try { + Response execute = okHttpClient.newCall(request).execute(); + String jsonData = execute.body().string(); + Gson gson = new Gson(); + List newData = gson.fromJson(jsonData, new TypeToken>() { + }.getType()); + bianQianList.addAll(newData); + List strings = initTitle(newData); + listContent.addAll(strings); + runOnUiThread(new Runnable() { + @Override + public void run() { + adapter.notifyDataSetChanged(); + } + }); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + }).start(); + } +``` + + #### 实验体会 + 这次实验学到的东西还是蛮多的,很多都是自己通过安卓《第一行代码学习》的,这真的是一本很好的入门书籍。不过很可惜的是,因为还没有看完这本书,只是学了点连皮毛都不到的知识,没办法完成整个app。 + 在这个最后一个实验里,还有没有写云同步的功能,和这个功能需要服务器端的接口支持,这样才能完成云同步的功能。总的来说,收获还行,锻炼了自己的自学能力。 + diff --git "a/com1614080901217/\346\210\252\345\233\276/1527168586(1).png" "b/com1614080901217/\346\210\252\345\233\276/555.png" similarity index 100% rename from "com1614080901217/\346\210\252\345\233\276/1527168586(1).png" rename to "com1614080901217/\346\210\252\345\233\276/555.png" diff --git "a/com1614080901217/\346\210\252\345\233\276/\345\256\236\351\252\2145.jpg" "b/com1614080901217/\346\210\252\345\233\276/\345\256\236\351\252\2145.jpg" new file mode 100644 index 000000000..f8623ce76 Binary files /dev/null and "b/com1614080901217/\346\210\252\345\233\276/\345\256\236\351\252\2145.jpg" differ diff --git "a/com1614080901217/\346\210\252\345\233\276/\345\256\236\351\252\214\344\272\224.jpg" "b/com1614080901217/\346\210\252\345\233\276/\345\256\236\351\252\214\344\272\224.jpg" new file mode 100644 index 000000000..af3a20298 Binary files /dev/null and "b/com1614080901217/\346\210\252\345\233\276/\345\256\236\351\252\214\344\272\224.jpg" differ