Как показать значение для одного текстового представления, если их идентификатор в JSONArray одинаков - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть json данные, которые показывают детали предыдущего заказа отеля.

Я хочу, чтобы дата и время совпадали, тогда "имя" элементов должно быть установлено в том же TextView в ListView с разделением запятой (,).

Данные, которые я получаю API это: -

{
 "error": false,
 "checkstatus": [
[
  {        
    "id": "244",                  
    "name": "Chicken Breast Curry",
    "date": "2020-02-22 11:13:53"       
  },
  {        
    "id": "244",       
    "name": "Vegetarian ", 
    "date": "2020-02-22 11:13:53"       
  },      
]
[
  {        
    "id": "245",                  
    "name": "Punjabi Royal for 2 person", 
    "date": "2020-02-25 09:11:23"       
  },       
]
]
}

Это мой Java Класс: -

for (int i = 0; i < array.length(); i++) {
        try {
            JSONArray jsonArray = array.getJSONArray(i);
            for (int j = 0; j < jsonArray.length(); j++) {
                JSONObject object = jsonArray.getJSONObject(j);
                sproduct_name = object.getString(TAG_PRODUCT_NAME);                  
                sdate_time = object.getString(TAG_TIME);                   
                orderId = object.getString(TAG_ORDER_ID);

                get = new HashMap<>();
                get.put(TAG_PRODUCT_NAME, sproduct_name);                    
                get.put(TAG_TIME, sdate_time);                   
                get.put(TAG_ORDER_ID, orderId);

                myList.add(get);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    adapter = new SimpleAdapter(getActivity(), myList, R.layout.order_history_child,
            new String[]{TAG_PRODUCT_NAME, TAG_TIME, TAG_ORDER_ID},
            new int[]{R.id.product_name, R.id.date_time, R.id.order_ids}) {

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            final View view = super.getView(position, convertView, parent);
            TextView product_name = view.findViewById(R.id.product_name);              
            TextView date_time = view.findViewById(R.id.date_time);               
            final TextView orderid = view.findViewById(R.id.order_ids);            

            return view;
        }
    };

Теперь я получаю такие данные снимок экрана : -

enter image description here

Это то, что я хочу : -

enter image description here

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Создать ArrayList для даты и времени и String Builder

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

StringBuilder sb = new StringBuilder();

Добавьте строку даты и времени в свой ArrayList и сравните со списком, если строка уже существует или нет

 for (int j = 0; j < jsonArray.length(); j++) {
                    JSONObject object = jsonArray.getJSONObject(j);
                    sdate_time = object.getString(TAG_TIME);                   
                    orderId = object.getString(TAG_ORDER_ID);

datetimeList.add(sdate_time);

Scanner input = new Scanner(System.in);

String input = input.next();
boolean isExist = false;
for (String item : datetimeList) { 
    if (input.equals(datetimeList.get(counter))) {
        //Your logic if it's there.
         isExist = true;
         break;
   }
}

 if(isExist) {
     //Found in the arraylist.
     sproduct_name = object.getString(TAG_PRODUCT_NAME);                  

    sb.append(sproduct_name);



 get = new HashMap<>();
                get.put(TAG_PRODUCT_NAME, sb.toString());                    
                get.put(TAG_TIME, sdate_time);                   
                get.put(TAG_ORDER_ID, orderId);

            myList.add(get);

 }
else{
         sproduct_name = object.getString(TAG_PRODUCT_NAME); 
  get = new HashMap<>();
                get.put(TAG_PRODUCT_NAME, sproduct_name);                    
                get.put(TAG_TIME, sdate_time);                   
                get.put(TAG_ORDER_ID, orderId);





  myList.add(get);                 

}
    }
0 голосов
/ 25 февраля 2020
try {
            JSONArray jsonArray = array.getJSONArray(i);
            for (int j = 0; j < jsonArray.length(); j++) {
                JSONObject object = jsonArray.getJSONObject(j);
                sproduct_name = object.getString(TAG_PRODUCT_NAME);                  
                sdate_time = object.getString(TAG_TIME);                   
                orderId = object.getString(TAG_ORDER_ID);

                get = new HashMap<>();
                get.put(TAG_PRODUCT_NAME, sproduct_name);  

                 //check here
                if(!object.getString(TAG_TIME).equals(sdate_time)){
                       get.put(TAG_TIME, sdate_time);                   
                }

                get.put(TAG_ORDER_ID, orderId);
                myList.add(get)

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...