이 액티비티에서 edittext에 입력한 값을 버튼 사용해 검색하는 프로젝트입니다
package com.example.test;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class MenuActivity extends AppCompatActivity {
private static String TAG = "phpmenu";
private static String IP_ADDRESS = "3.39.179.177";
private static String TAG_JSON = "tb_restaurant";
private static String TAG_NAME = "rest_name";
private static String TAG_MENU = "main_menu";
private static String TAG_ADD = "short_address";
ArrayList<HashMap<String,String>>mArrayList;
ListView lv;
TextView tv;
EditText et;
String mJsonString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
et = (EditText) findViewById(R.id.editText1);
tv = (TextView) findViewById(R.id.textView5);
lv = (ListView) findViewById(R.id.listview0);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mArrayList.clear();
GetData task = new GetData();
task.execute(et.getText().toString());
et.setText("");
}
});
mArrayList = new ArrayList<>();
}
class GetData extends AsyncTask<String, Void, String>{
ProgressDialog progressDialog;
String errorString = null;
@Override
protected void onPreExecute(){
super.onPreExecute();
progressDialog = ProgressDialog.show(MenuActivity.this, "please wait",null,true,true);
}
@Override
protected void onPostExecute(String result){
super.onPostExecute(result);
progressDialog.dismiss();
tv.setText(result);
Log.d(TAG, "response-" + result);
if(result == null){
tv.setText(errorString);
}
else{
mJsonString = result;
showResult();
}
}
@Override
protected String doInBackground(String... params){
String rest_name = params[0];
String serverURL = "http://3.39.179.177/menu.php";
String postParameters = "rest_name=" + rest_name;
try{
URL url = new URL(serverURL);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setReadTimeout(5000);
httpURLConnection.setConnectTimeout(5000);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoInput(true);
httpURLConnection.connect();
OutputStream outputStream = httpURLConnection.getOutputStream();
outputStream.write(postParameters.getBytes("UTF-8"));
outputStream.flush();
outputStream.close();
int responseStatusCode = httpURLConnection.getResponseCode();
Log.d(TAG, "POST response code - " + responseStatusCode);
InputStream inputStream;
if(responseStatusCode == HttpURLConnection.HTTP_OK) {
inputStream = httpURLConnection.getInputStream();
}
else{
inputStream = httpURLConnection.getErrorStream();
}
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder sb = new StringBuilder();
String line;
while((line = bufferedReader.readLine()) != null){
sb.append(line);
}
bufferedReader.close();
return sb.toString().trim();
} catch (Exception e) {
Log.d(TAG, "SearchData: Error ", e);
errorString = e.toString();
return null;
}
}
}
private void showResult(){
try{
JSONObject jsonObject = new JSONObject(mJsonString);
JSONArray jsonArray = jsonObject.getJSONArray(TAG_JSON);
for(int i=0;i<jsonArray.length();i++) {
JSONObject item = jsonArray.getJSONObject(i);
String rest_name = item.getString(TAG_NAME);
String main_menu = item.getString(TAG_MENU);
String short_address = item.getString(TAG_ADD);
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put(TAG_NAME,rest_name);
hashMap.put(TAG_MENU,main_menu);
hashMap.put(TAG_ADD,short_address);
}
ListAdapter adapter = new SimpleAdapter(MenuActivity.this,mArrayList,R.layout.item_list,
new String[]{TAG_NAME,TAG_MENU,TAG_ADD},
new int[]{R.id.textView2,R.id.textView3,R.id.textView4}
);
lv.setAdapter(adapter);
}catch(JSONException e){
Log.d(TAG,"showResult:",e);
}
}
}
php 파일입니다 얘는 검색 기능 잘 되더라고요
