#android #android-studio
Вопрос:
Я следую этому учебнику о том, как искать данные в базе данных, и после его завершения я понял, что в представлении списка есть подраздел. Как я могу использовать подраздел в представлении списка? Так как в верхней части я могу вывести имя, я хотел бы вывести их контактный номер в части подраздела. Как я могу это сделать? Вот пользовательский интерфейс приложения для поиска(я не могу опубликовать фотографию, на которой написано «вам нужно по крайней мере 10 репо»): https://i.stack.imgur.com/t4ZyQ.png
Вот код, которому я следовал:
Search.java
private Button move; ListView SubjectListView; ProgressBar progressBarSubject; String ServerURL = "http://192.168.1.22/loginregister/search/Search.php"; EditText editText ; Listlt;Stringgt; listString = new ArrayListlt;Stringgt;(); ArrayAdapterlt;Stringgt; arrayAdapter ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); move=findViewById(R.id.button); move.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(Search.this, Ticket.class); startActivity(intent); } }); SubjectListView = (ListView)findViewById(R.id.listview1); progressBarSubject = (ProgressBar)findViewById(R.id.progressBar); editText = (EditText)findViewById(R.id.edittext1); new GetHttpResponse(Search.this).execute(); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { Search.this.arrayAdapter.getFilter().filter(charSequence); } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable editable) { } }); } private class GetHttpResponse extends AsyncTasklt;Void, Void, Voidgt; { public Context context; String ResultHolder; public GetHttpResponse(Context context) { this.context = context; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Void doInBackground(Void... arg0) { HttpServicesClass httpServiceObject = new HttpServicesClass(ServerURL); try { httpServiceObject.ExecutePostRequest(); if(httpServiceObject.getResponseCode() == 200) { ResultHolder = httpServiceObject.getResponse(); if(ResultHolder != null) { JSONArray jsonArray = null; try { jsonArray = new JSONArray(ResultHolder); JSONObject jsonObject; for(int i=0; ilt;jsonArray.length(); i ) { jsonObject = jsonArray.getJSONObject(i); listString.add(jsonObject.getString("name").toString()) ; } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } else { Toast.makeText(context, httpServiceObject.getErrorMessage(), Toast.LENGTH_SHORT).show(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { progressBarSubject.setVisibility(View.GONE); SubjectListView.setVisibility(View.VISIBLE); arrayAdapter = new ArrayAdapterlt;Stringgt;(Search.this,android.R.layout.simple_list_item_2, android.R.id.text1, listString); SubjectListView.setAdapter(arrayAdapter); } } }
HttpServiceClass.Java
public int responseCode; public String message; public String response; public ArrayListlt;NameValuePairgt; ArrayListParams; public ArrayList lt;NameValuePairgt; headers; public String UrlHolder; public String getResponse() { return response; } public String getErrorMessage() { return message; } public int getResponseCode() { return responseCode; } public HttpServicesClass(String url) { HttpServicesClass.this.UrlHolder = url; ArrayListParams = new ArrayListlt;NameValuePairgt;(); headers = new ArrayListlt;NameValuePairgt;(); } public void AddParam(String name, String value) { ArrayListParams.add(new BasicNameValuePair(name, value)); } public void AddHeader(String name, String value) { headers.add(new BasicNameValuePair(name, value)); } public void ExecuteGetRequest() throws Exception { String MixParams = ""; if(!ArrayListParams.isEmpty()) { MixParams = "?"; for(NameValuePair p : ArrayListParams) { String paramString = p.getName() "=" URLEncoder.encode(p.getValue(),"UTF-8"); if(MixParams.length() gt; 1) { MixParams = "amp;" paramString; } else { MixParams = paramString; } } } HttpGet httpGet = new HttpGet(UrlHolder MixParams); for(NameValuePair h : headers) { httpGet.addHeader(h.getName(), h.getValue()); } executeRequest(httpGet, UrlHolder); } public void ExecutePostRequest() throws Exception { HttpPost httpPost = new HttpPost(UrlHolder); for(NameValuePair h : headers) { httpPost.addHeader(h.getName(), h.getValue()); } if(!ArrayListParams.isEmpty()) { httpPost.setEntity(new UrlEncodedFormEntity(ArrayListParams, HTTP.UTF_8)); } executeRequest(httpPost, UrlHolder); } private void executeRequest(HttpUriRequest request, String url) { HttpParams httpParameters = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParameters, 10000); HttpConnectionParams.setSoTimeout(httpParameters, 10000); HttpClient httpClient = new DefaultHttpClient(httpParameters); HttpResponse httpResponse; try { httpResponse = httpClient.execute(request); responseCode = httpResponse.getStatusLine().getStatusCode(); message = httpResponse.getStatusLine().getReasonPhrase(); HttpEntity entity = httpResponse.getEntity(); if (entity != null) { InputStream inputStream = entity.getContent(); response = convertStreamToString(inputStream); inputStream.close(); } } catch (ClientProtocolException e) { httpClient.getConnectionManager().shutdown(); e.printStackTrace(); } catch (IOException e) { httpClient.getConnectionManager().shutdown(); e.printStackTrace(); } } private String convertStreamToString(InputStream is) { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is)); StringBuilder stringBuilder = new StringBuilder(); String line = null; try { while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line "n"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return stringBuilder.toString(); } }