今天完成了新闻的搜索功能:
package com.example.bowenwang;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
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 java.util.concurrent.TimeUnit;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class SearchActivity extends AppCompatActivity implements View.OnClickListener{
EditText editText;
Button button;
List<Bean> list=new ArrayList<>();
String search;
RecyclerAdapter2 recyclerAdapter2;
RecyclerView recyclerView;
private OkHttpClient okHttpClient=new OkHttpClient.Builder()
.connectTimeout(60 * 1000, TimeUnit.MILLISECONDS)
.readTimeout(5 * 60 * 1000, TimeUnit.MILLISECONDS)
.writeTimeout(5 * 60 * 1000, TimeUnit.MILLISECONDS)
.build();
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_search);
recyclerView = (RecyclerView) findViewById(R.id.recyclersearch);
editText=findViewById(R.id.search_search_et_input);
button=findViewById(R.id.search);
button.setOnClickListener(this);
}
private void get(){
new Thread(){
@Override
public void run() {
super.run();
String url="http://39.103.196.146:8888/getNewsData/SearchServlet";
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 {
RequestBody responseBody=new FormBody.Builder()
.add("search", String.valueOf(search))
.build();
Request request=new Request.Builder().post(responseBody).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);
list=new ArrayList<>();
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 content=jsonObject.getString("content");
String img=jsonObject.getString("img");
Bean bean=new Bean();
bean.setTitle(title);
bean.setTime(time);
bean.setPlace(place);
bean.setContent(content);
bean.setImg(img);
list.add(bean);
}
}
private void ceshi(){
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
recyclerAdapter2=new RecyclerAdapter2(list);
recyclerView.setAdapter(recyclerAdapter2);
}
@Override
public void onClick(View v) {
search=editText.getText().toString();
get();
}
}