今天完成获取云端数据库展示为新闻,
以一个测试例子来看:
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());
}
}
效果:

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