単純泉ブートデモ-5 [Androidアプリがサーバーからデータを取得し、送信]

Androidのメーカーを開き、[ファイル]> [新規作成]> [新しいプロジェクト]を選択します

 

空のアクティビティを選択し、[次へ]をクリックします

 

プロジェクト名を記入し、パッケージ名、パスおよびその他の情報については、[完了]をクリックします

 

bulid.gradle(アプリ)ファイルに依存している追加

    implementation 'com.squareup.okhttp:okhttp:2.4.0'
    implementation 'com.alibaba:fastjson:1.2.10'

今すぐ同期]をクリックします

 

AndroidManifest.xmlファイルにネットワークに参加するためのアクセス許可

 

<uses-permission android:name="android.permission.INTERNET" />

Buttonコントロールとレイアウトファイルactivity_main.xmlでリストビューを追加し、我々はすべての学生が情報へのアクセスを実現することができますボタンをクリックします

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/bt_refresh"
        android:text="获取学生信息"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@+id/list_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></ListView>

</LinearLayout>

、このような何かをデザインビューを開きます。

 

各情報は、我々は、問合せを表示するために、新しいレイアウトフォルダのレイアウトファイルtext.xmlに再びです

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:textAlignment="center"
        android:layout_weight="1"
        android:text="id"
        android:textSize="30sp"/>
    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:textAlignment="center"
        android:layout_weight="1"
        android:text="name"
        android:textSize="30sp"/>
    <TextView
        android:id="@+id/sex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:textAlignment="center"
        android:layout_weight="1"
        android:text="sex"
        android:textSize="30sp"/>
</LinearLayout>

、このような何かをデザインビューを開きます。

 

新入生のエンティティクラスは、getおよびsetメソッドことを提供

public class Student implements Serializable {
    private int id;
    private String sex;
    private String name;


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

以下の変数が定義されているMainActivityに(MainActivity完全なコードは終わりです)

 

生徒の情報を取得するためのgetData押し()メソッドの実装後に、リスナーを追加するには、各コンポーネントのボタンの現在のコンテキストおよびレイアウトファイルを取得します。

 

方法でgetJsonData okhttp JSON取得したデータを使用し、その後スチューデントアレイにデータを解析し、情報をハンドラとリストビューに表示されます

 

そして、私たちは、このハンドラを定義し、それがListViewコントロールアダプタを制御するために、私たちの習慣があります

 

そして、MyAdapterを定義します

 

 

さて、今、このアプリのアンドロイドを実行している仮想マシンを開き、春ブート当社の以前のプロジェクトを実行します

 

学生情報の私達のデータベースに到達するために「学生情報を取得」ボタンをクリックしてください

 

 

 

 

 

リクエストの引数は、(我々はSTUに記入し、新たな学生情報を挿入すると仮定し、栗を与えることを取るここに挿入する)があります

 

JSON、当社のサーバー側を解析するためにも同様に依存fastjsonを追加します

 

サーバコード

ここでMainActivityコードを掲示し、再び自分をノックすることをお勧めします

public class MainActivity extends AppCompatActivity {

    private ListView mLv;
    private Context mContext;

    private String urlStr = "http://IP地址:8080/student";
    private List<Student> studentList = null;
    private Button getInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLv = findViewById(R.id.list_item);
        getInfo = findViewById(R.id.bt_refresh);
        getInfo.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                //获取学生信息列表
                getJsonData();
                //插入信息
                /*Student stu = new Student();
                stu.setId(12121);
                stu.setName("赵九");
                stu.setSex("男");
                insertInto(stu);*/
            }
        });
        mContext = this;
    }

    private void getJsonData(){
        OkHttpClient mOkHttpClient = new OkHttpClient();
        final Request request = new Request.Builder().url(urlStr).build();
        Call call = mOkHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {
                Log.v("Fail",e.getMessage());
            }
            @Override
            public void onResponse(Response response) throws IOException {
                String responseStr = response.body().string();
                List<Student> studentEntities = new ArrayList<>();
                studentEntities = com.alibaba.fastjson.JSONArray.parseArray(responseStr,Student.class);
                Message msg = mHandler.obtainMessage();
                msg.obj = studentEntities;
                mHandler.sendMessage(msg);
            }
        });
    }

    String INSERT_STUDENT = "http://192.168.43.140:8080/insertstudent";
    /**
     * 插入单个student到mysql
     * **/
    private void insertInto(Student stu){
        String stuStr = JSON.toJSONString(stu);
        OkHttpClient mOkHttpClient = new OkHttpClient();
        FormEncodingBuilder builder = new FormEncodingBuilder();
        builder.add("stu",stuStr);
        final Request request = new Request.Builder()
                .url(INSERT_STUDENT)
                .post(builder.build())
                .build();
        Call call = mOkHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {
                Log.v("Fail",e.getMessage());
            }

            @Override
            public void onResponse(Response response) throws IOException {

            }
        });
    }


    private Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            studentList = (List<Student>)msg.obj;
            if(null != studentList){
                mLv.setVisibility(View.VISIBLE);
                MyAdapter adapter = new MyAdapter(mContext,studentList);
                mLv.setAdapter(adapter);
            }
        }
    };

    private class MyAdapter extends BaseAdapter {

        private List<Student> studentEntities = new ArrayList<>();
        private Context context;

        public MyAdapter(Context context,List<Student> studentEntities){
            this.context = context;
            this.studentEntities = studentEntities;
        }

        @Override
        public int getCount() {
            if(studentEntities.size() != 0){
                return studentEntities.size();
            }else{
                return 0;
            }
        }

        @Override
        public Object getItem(int i) {
            if(studentEntities.size() != 0){
                return studentEntities.get(i);
            }else{
                return null;
            }
        }

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

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            ViewHolder mViewHolder = null;
            if(null == view){
                mViewHolder = new ViewHolder();
                view = LayoutInflater.from(mContext).inflate(R.layout.text,null);
                mViewHolder.mTvName = (TextView) view.findViewById(R.id.name);
                mViewHolder.mTvId = (TextView) view.findViewById(R.id.id);
                mViewHolder.mTvSex = (TextView) view.findViewById(R.id.sex);
                view.setTag(mViewHolder);
            }else{
                mViewHolder = (ViewHolder) view.getTag();
            }

            Student stu = studentEntities.get(i);
            mViewHolder.mTvName.setText(stu.getName());
            mViewHolder.mTvId.setText(String.valueOf(stu.getId()));
            mViewHolder.mTvSex.setText(stu.getSex());

            return view;
        }
    }

    private class ViewHolder{
        private TextView mTvName,mTvId,mTvSex;
    }
}

 

公開された51元の記事 ウォンの賞賛1 ビュー1053

おすすめ

転載: blog.csdn.net/si_si_si/article/details/104771796