今天完成获取云端数据库展示为新闻,
以一个测试例子来看:
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()); } }
效果:
点击可以看新闻,新闻详细页面格式后续继续进行修改