단순한 스프링 부트 데모 -5- [안드로이드 앱 획득하고 상기 서버로부터 데이터를 전송]

안드로이드 스튜디오를 열고 파일 -> 새로 만들기 -> 새 프로젝트를 선택

 

빈 활동을 선택하고 다음을 클릭합니다

 

프로젝트 이름을 기입, 패키지 이름, 경로 및 기타 정보 마침을 클릭합니다

 

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에서 ListView를 추가, 우리는 모든 학생들이 정보에 대한 액세스를 달성 할 수있는 버튼을 클릭합니다

<?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에 표시되는

 

그리고 우리는이 핸들러를 정의, 그것은 ListView에 어댑터를 제어하는 ​​우리의 정의입니다

 

그런 다음 MyAdapter을 정의

 

 

자, 이제 봄 부팅 우리의 이전 프로젝트를 실행 한 다음이 응용 프로그램의 안드로이드를 실행하는 가상 머신을 엽니 다

 

학생 정보의 우리의 데이타베이스에 도착하는 "학생 정보 가져 오기"버튼을 클릭

 

 

 

 

 

요청에 대한 인수가 있습니다 (, 밤을 제공하기 위해 수행 여기에 삽입 스투에 작성 새로운 학생 정보 삽입 우리를 가정)

 

구문 분석 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 개 원래 기사 · 원 찬양 한 · 전망 1053

추천

출처blog.csdn.net/si_si_si/article/details/104771796