Android 读取本地数据

前言

在日常开发当中,API接口还没有部署,但是UI已经出来了,这时候往往都会使用本地数据进行功能界面的搭建,这样往往能很大程度节约开发时间,工具类拿来直接用,话不多说,开整

一、项目搭建

1 创建项目

 2 下一步 项目名称 My15 语言 java 直接finish 创建完成

 3 创建好项目后  右键 main  创建资本地济源文件目录 选择如下

 

 4 继续选择assets 回车 创建完成

5 点击assets 右键创建一个file 文件 名叫 JsonData.json 这个json 文件就是放本地Json 数据的 根据服务器的格式进行放入 ,项目已经搭建完成 接下来就是使用

二、使用步骤

1.引入库

在app 下的build 下添加

api("com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30") 

api("com.google.code.gson:gson:2.8.6")

在项目跟目下的build 下添加仓库

maven { url 'https://jitpack.io' }

2.工具类

my15 右键创建 Tools 文件 ,改文件就是读取本地数据的工具类

public class Tools {

    /**
     * 读取本地资源文件
     *
     * @param context  上下文
     * @param fileName 本地数据文件名
     * @return
     */
    public static String getFromAssets(Context context, String fileName) {
        InputStreamReader inputReader = null;
        BufferedReader bufReader = null;
        try {
            inputReader = new InputStreamReader(context.getResources().getAssets().open(fileName));
            bufReader = new BufferedReader(inputReader);
            String line = "";
            StringBuilder result = new StringBuilder();
            while ((line = bufReader.readLine()) != null)
                result.append(line);
            return result.toString();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (inputReader != null) {
                    inputReader.close();
                }
                if (bufReader != null) {
                    bufReader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "";
    }

}

3 使用步骤

1  my15 右键创建一个名为 JsonAdapter 的适配器 依次展示的是 车次类型 跟时间 ,实体类以及布局文件 在下面

public class JsonAdapter extends BaseQuickAdapter<JsonBean.DataBean.ResultBean, BaseViewHolder> {

    public JsonAdapter(int layoutResId, @Nullable List<JsonBean.DataBean.ResultBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, JsonBean.DataBean.ResultBean item) {

        helper.setText(R.id.cc_tv, "车次:" + item.getTrain());
        helper.setText(R.id.name_tv, "类型:" + item.getName());
        helper.setText(R.id.time_tv, "时间:" + item.getTime());


    }
}

2 穿件布局文件 text_item_layout

<?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="140dp"
    android:background="@drawable/linearlayout_underline"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/cc_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="15dp"
            android:text="车次" />

        <TextView
            android:id="@+id/name_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="15dp"
            android:text="和谐号" />


    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center_vertical">

        <TextView
            android:id="@+id/time_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:text="2020-10-12" />

    </LinearLayout>


</LinearLayout>

3 根据本地Json 数据生成实体类 JsonBean

public class JsonBean {

    private String code;
    private String message;
    private DataBean data;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public static class DataBean {
        private List<ResultBean> result;

        public List<ResultBean> getResult() {
            return result;
        }

        public void setResult(List<ResultBean> result) {
            this.result = result;
        }

        public static class ResultBean {
            private String train;
            private String name;
            private String time;

            public String getTrain() {
                return train;
            }

            public void setTrain(String train) {
                this.train = train;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public String getTime() {
                return time;
            }

            public void setTime(String time) {
                this.time = time;
            }
        }
    }
}

4 最后就是使用了 ,也很简单 在MainActivity 中使用如下

public class MainActivity extends AppCompatActivity {


    private List<JsonBean.DataBean.ResultBean> jsonList = new ArrayList<>();
    private JsonAdapter jsonAdapter;
    private RecyclerView jsonRv;


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

        jsonRv = findViewById(R.id.json_list);

        String fromAssets = Tools.getFromAssets(this, "JsonData.json");
        JsonBean jsonBean = new Gson().fromJson(fromAssets, JsonBean.class);
        jsonList = jsonBean.getData().getResult();

        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        jsonRv.setLayoutManager(layoutManager);
        jsonAdapter = new JsonAdapter(R.layout.text_item_layout, jsonList);
        jsonRv.setAdapter(jsonAdapter);
        jsonAdapter.notifyDataSetChanged();


    }
}

5 最后看下 运行截图

总结

兵马未动,粮草先行 ,做好提前规划,才能更胜一筹

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值