У меня есть эта активность, которая получает данные из таблицы в моей базе данных, и я отображаю эти данные внутри ListView. Но дело в том, что я хочу сделать клики itens внутри этого ListView, и как только пользователь нажмет на элемент, он должен перенаправить его на другой экран, на котором отображаются детали этого элемента. Я показываю только номер заказа и дату, как только я нажму на него, он должен показать больше деталей. Как мне это сделать?Отображать данные из базы данных внутри ListView
Вот мой код до сих пор:
public class Orders extends Fragment {
private String jsonResult;
//Here I get the order id and date
private String url = "https://www.example.com/orders.php";
private ListView listView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.orders, container, false);
listView = (ListView) v.findViewById(R.id.listView1);
TextView textView3 = (TextView) v.findViewById(R.id.textView16);
//Getting current date and displaying inside the textView
String currentDate = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault()).format(new Date());
textView3.setText(Html.fromHtml(currentDate));
accessWebService();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String item = ((TextView) view).getText().toString();
String[] parts = item.split(" ");
String order_nbr = parts[0];
String order_id = order_nbr.replaceAll("[#]","");
Intent intent = new Intent(getActivity(), OrderDetails.class);
intent.putExtra("order_id", order_id);
System.out.println(order_id);
startActivity(intent);
}
});
return v;
}
// Async Task to access the web
private class JsonReadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
HashMap<String,String> data = new HashMap<>();
data.put("order_id",MainScreen.USERID);
RegisterUserClass ruc = new RegisterUserClass();
String result = ruc.sendPostRequest(url,data);
jsonResult = result;
return null;
}
private StringBuilder inputStreamToString(InputStream is) {
String rLine = "";
StringBuilder answer = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try {
while ((rLine = rd.readLine()) != null) {
answer.append(rLine);
}
}
catch (IOException e) {
// e.printStackTrace();
Toast.makeText(getActivity().getApplicationContext(),
"Error..." + e.toString(), Toast.LENGTH_LONG).show();
}
return answer;
}
@Override
protected void onPostExecute(String result) {
ListDrwaer();
}
}// end async task
public void accessWebService() {
JsonReadTask task = new JsonReadTask();
// passes values for the urls string array
task.execute(new String[] { url });
}
// build hash set for list view
public void ListDrwaer() {
List<Map<String, String>> employeeList = new ArrayList<Map<String, String>>();
try {
JSONObject jsonResponse = new JSONObject(jsonResult);
JSONArray jsonMainNode = jsonResponse.optJSONArray("orders");
for (int i = 0; i < jsonMainNode.length(); i++) {
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
String order_number = jsonChildNode.optString("orderid");
String order_dateNhour = jsonChildNode.optString("order_date");
String[] parts = order_dateNhour.split(" ");
String date = parts[0];
String hour = parts[1];
String[] test1 = date.split("-");
String year = test1[0];
String month = test1[1];
String day = test1[2];
String outPut = "#" + order_number + " " + day+"/"+ month +"/"+ year + " " + hour + " >";
employeeList.add(createEmployee("orders", outPut));
}
} catch (JSONException e) {
Toast.makeText(getActivity().getApplicationContext(), "Error" + e.toString(),
Toast.LENGTH_SHORT).show();
}
SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), employeeList,
android.R.layout.simple_list_item_1,
new String[]{"orders"}, new int[] { android.R.id.text1 });
listView.setAdapter(simpleAdapter);
}
private HashMap<String, String> createEmployee(String name, String number) {
HashMap<String, String> employeeNameNo = new HashMap<String, String>();
employeeNameNo.put(name, number);
return employeeNameNo;
}
}
В чем проблема? Похоже, что вы обрабатываете клики с деталями только в своем коде. Вы даже начинаете новое действие при щелчке элемента. Так в чем проблема? Как это не работает для вас? – NoChinDeluxe
Да, он работает так, как есть. Но я получаю только идентификатор заказа и дату из базы данных и отображаю его в виде списка. Я хочу получить более подробную информацию о заказе, чтобы отобразить его на другом экране/мероприятии после того, как я нажму на элемент в виде списка. –
Так что просто переходите в дополнительные дополнения к своим намерениям с информацией, которую вы хотите предоставить. Все еще не вижу проблемы здесь. – NoChinDeluxe