Android はローカル データを読み取ります

序文

日常の開発では、API インターフェイスはまだデプロイされていませんが、UI は公開されています。このとき、ローカル データを使用して機能インターフェイスを構築することが多く、開発時間を大幅に節約できることがよくあります。ツールが使用されます。直接、そしてオープンと言う言葉はあまりありません

1. プロジェクトの構築

1 プロジェクトを作成する

 2 次のプロジェクト名 My15 言語 Java を直接終了すると作成が完了します

 3 プロジェクトを作成した後、main を右クリックして資本ソース ファイル ディレクトリを作成し、次のように選択します

 

 4 続けてアセットを選択し、Enter キーを押して作成を完了します

5 アセットをクリックし、右クリックして JsonData.json という名前のファイルを作成します。この json ファイルは、サーバーの形式に従ってローカル Json データを配置するためのものです。プロジェクトがビルドされたので、次のステップはそれを使用することです。

2. ステップを使用する

1.ライブラリをインポートする

アプリの下のビルドの下に追加

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

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

プロジェクトトラックのビルドの下に倉庫を追加します

Maven { URL 'https://jitpack.io' }

2. ツール

my15 を右クリックしてツール ファイルを作成し、ローカル データを読み取るためのツール クラスになるようにファイルを変更します。

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 最後に、実行中のスクリーンショットを確認します。

要約する

兵士と馬は動かず、食べ物と草が優先され、事前に計画を立てたほうが良い場合があります

おすすめ

転載: blog.csdn.net/X_sunmmer/article/details/130802898