团队冲刺第七天

今天完成获取云端数据库展示为新闻,

以一个测试例子来看:

Mainactivity:

package com.example.linkmysql;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button btn;
    TextView textView;
    List<Bean> list=new ArrayList<>();
    Adapter adapter;
    ListView listView;
    LinearLayout click;
    TextView title;
    public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
    private OkHttpClient okHttpClient=new OkHttpClient();
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            list= (List<Bean>) msg.obj;
            ceshi();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=findViewById(R.id.btn);
        listView=findViewById(R.id.list);
        textView=findViewById(R.id.data);
        title=findViewById(R.id.tv_title);
        btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn:
                get();
                break;
            case R.id.click:
                Toast.makeText(this,title.getText().toString(),Toast.LENGTH_SHORT).show();
                break;
        }


    }
    private void get(){
       new Thread(){
           @Override
           public void run() {
               super.run();
               String url="http://39.103.196.146:8888/getNewsData/GetNewsDataServlet";
               try {
                   String result=getData(url);
                   manageResponse(result);
                   Log.e("内容:",result);
                   Message msg=Message.obtain();
                   msg.obj=list;
                   handler.sendMessage(msg);
               } catch (IOException | JSONException e) {
                   e.printStackTrace();
               }
           }
       }.start();
    }
    private String getData(String url) throws IOException {
        Request request=new Request.Builder().url(url).build();
        Response response=okHttpClient.newCall(request).execute();
        return response.body().string();
    }
    private void manageResponse(String result) throws JSONException {
        JSONArray jsonArray=new JSONArray(result);
        for(int i=0;i<jsonArray.length();i++)
        {
            JSONObject jsonObject=jsonArray.getJSONObject(i);
            String title=jsonObject.getString("title");
            String time=jsonObject.getString("time");
            String place=jsonObject.getString("place");
            String author=jsonObject.getString("author");
            String content=jsonObject.getString("content");
            Bean bean=new Bean();
            bean.setTitle(title);
            bean.setTime(time);
            bean.setPlace(place);
            bean.setAuthor(author);
            bean.setContent(content);
            list.add(bean);
        }
    }
    private void ceshi(){
        adapter=new Adapter(this,list);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Bean bean= (Bean) adapter.getItem(position);
                Toast.makeText(MainActivity.this,bean.getTitle(),Toast.LENGTH_SHORT).show();
                Intent iti=new Intent(MainActivity.this,DatailActivity.class);
                Bundle bundle = new Bundle();
                bundle.putSerializable("bean",bean);
                iti.putExtras(bundle);
                startActivity(iti);
            }
        });
        list=new ArrayList<>();
    }
}

 DatadilActivity:

package com.example.linkmysql;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class DatailActivity extends AppCompatActivity {
    TextView title;
    TextView time;
    TextView place;
    TextView author;
    TextView content;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_datail);
        initview();
    }

    private void initview() {
        title=findViewById(R.id.datail_title);
        time=findViewById(R.id.datail_time);
        place=findViewById(R.id.datail_place);
        author=findViewById(R.id.datail_author);
        content=findViewById(R.id.datail_content);
        Intent intent = this.getIntent();
        Bean bean=(Bean) intent.getSerializableExtra("bean");
        title.setText(bean.getTitle());
        time.setText(bean.getTime());
        place.setText(bean.getPlace());
        author.setText(bean.getAuthor());
        content.setText(bean.getContent());
    }
}

 效果:

 

点击可以看新闻,新闻详细页面格式后续继续进行修改

 

 

posted @ 2021-05-09 23:35  哦心有  阅读(63)  评论(0编辑  收藏  举报