2016-05-06 8 views
1

У меня есть эта активность, которая получает данные из таблицы в моей базе данных, и я отображаю эти данные внутри 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; 
    } 
} 
+0

В чем проблема? Похоже, что вы обрабатываете клики с деталями только в своем коде. Вы даже начинаете новое действие при щелчке элемента. Так в чем проблема? Как это не работает для вас? – NoChinDeluxe

+0

Да, он работает так, как есть. Но я получаю только идентификатор заказа и дату из базы данных и отображаю его в виде списка. Я хочу получить более подробную информацию о заказе, чтобы отобразить его на другом экране/мероприятии после того, как я нажму на элемент в виде списка. –

+0

Так что просто переходите в дополнительные дополнения к своим намерениям с информацией, которую вы хотите предоставить. Все еще не вижу проблемы здесь. – NoChinDeluxe

ответ

0

Я был в состоянии решить мою проблему после того, как все! Я создал ArrayList списков, чтобы хранить все данные, которые я хочу показать в следующем экране со всех заказов (хотя я просто хотел показать в ListView 3 значения): список

List<List<String>> order_details = new ArrayList<List<String>>(); 

Этот способ # 1 будет для деталей первого порядка, № 2 будет для деталей второго порядка, и это продолжается. После того, как я нажму на элемент в этом ListView, я ищу в этом ArrayList, в списке которого указан этот номер заказа, и я отправил на следующую операцию (Детали заказа) все данные, хранящиеся в этом списке, в отношении этого конкретного заказа. Это сработало отлично!

Смежные вопросы