Логика сравнения со списком и удаления элемента из Spinner android - PullRequest
1 голос
/ 07 июня 2019

На данный момент у меня есть два списка, один я сделал сам, а другой от Parse.

Первый список ...

public static List<String> getHoraDia(){
    List<String> list = new ArrayList<>();
    list.add("05:00am");
    list.add("05:30am");
    list.add("06:00am");
    list.add("06:30am");
    list.add("07:00am");
    list.add("07:30am");
    list.add("08:00am");
    list.add("08:30am");
    list.add("09:00am");
    list.add("09:30am");
    list.add("10:00am");
    list.add("10:30am");
    list.add("11:00am");
    list.add("11:30am");
    list.add("12:00am");
    list.add("12:30am");
    list.add("1:00pm");
    list.add("1:30pm");
    list.add("2:00pm");
    list.add("2:30pm");
    list.add("3:00pm");
    list.add("3:30pm");
    list.add("4:00pm");
    list.add("4:30pm");
    list.add("5:00pm");
    list.add("5:30pm");

    return  list;
}
   }

В другом списке есть 8:00 и 9:30 утра. Приходит мой первый вопрос. Могу ли я сравнить список с разными размерами ???.

Это то, что я сейчас думаю ..

int contador = 0;
    for (String horas : horasList) {
        Log.i("HORA","este es horas"+horas);
        for (ParseObject citas : citasTaller) {
            String horaCita = citas.getString("Hora");
            Log.i("HORA","este es horasCita"+horaCita);
            if(horas.equals(horaCita)){

            }
            contador++;
        }

    }

Не могу понять, что вставить в оператор if ..

Моя цель состоит в том, чтобы выполнить это, если строка находится в horasList и в citasTaller стереть из Spinner. Что я и сделал, поставив случайную позицию в это ...

 horasList.remove(3);
 adapter.notifyDataSetChanged();

Так что должно быть что-то вроде

horasList.remove(horaCita)

Должен быть лучший способ сделать это. В этом порядке идей мне нужно удалить из horasList 8:00 и 9:30 утра.

Кстати, как я это сделал ..

horasList = UtilAppFuntions.getHoraDia();

Это обновление кода, соответствующего ответам ... enter image description here

Image about java 7

Итак, я сделал это, но у меня проблема @ muasif80, когда час равен строке, индекс удаляется, а список также удаляется в 1, поэтому индекс изменяется для каждого значения.

ParseQuery<ParseObject> query = ParseQuery.getQuery("CitaTaller");
    qEmp=ParseObject.createWithoutData("Empresa",objIdEmpresa);
    query.whereEqualTo("Empresa",qEmp);
    query.whereEqualTo("fecha", fechaSeleccionada);
    query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> objects, ParseException e) {
            if (e == null) {
                for (ParseObject obj : objects) {

                    String hora=obj.getString("Hora");

                    citasTaller.add(obj);
                    int listSize = citasTaller.size();

                    for (int i = 0; i < listSize; i++) {
                        Log.i("JOHI", String.valueOf(citasTaller.get(i)));
                    }
                }
                adapter =
                        new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, horasList);
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                sphorasdia.setAdapter(adapter);

                for(ParseObject parseObject : citasTaller){
                    String hora = parseObject.getString("Hora");
                    if(hora.equals("05:00am")){
                        horasList.remove(0);
                        adapter.notifyDataSetChanged();
                    }
                    if(hora.equals("05:30am")){
                        horasList.remove(1);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("06:00am")) {
                        horasList.remove(2);
                        adapter.notifyDataSetChanged();


                    }
                    if (hora.equals("6:30am")){
                        horasList.remove(3);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("7:00am")){
                        horasList.remove(4);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("7:30am")){
                        horasList.remove(5);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("8:00am")){
                        horasList.remove(6);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("8:30am")){
                        horasList.remove(7);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("9:00am")){
                        horasList.remove(8);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("9:30am")){
                        horasList.remove(9);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("10:00am")){
                        horasList.remove(10);
                        adapter.notifyDataSetChanged();

                    }
                    if(hora.equals("10:30am")){
                        horasList.remove(11);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("11:00am")){
                        horasList.remove(12);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("11:30am")){
                        horasList.remove(13);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("12:00pm")){
                        horasList.remove(14);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("12:30pm")){
                        horasList.remove(15);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("1:00pm")){
                        horasList.remove(16);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("1:30pm")){
                        horasList.remove(17);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("2:00pm")){
                        horasList.remove(18);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("2:30pm")){
                        horasList.remove(19);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("3:00pm")){
                        horasList.remove(20);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("3:30pm")){
                        horasList.remove(21);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("4:00pm")){
                        horasList.remove(22);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("4:30pm")){
                        horasList.remove(23);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("5:00pm")){
                        horasList.remove(24);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("5:30pm")){
                        horasList.remove(25);
                        adapter.notifyDataSetChanged();


                    }
                    if(hora.equals("6:00pm")){
                        horasList.remove(26);
                        adapter.notifyDataSetChanged();


                    }
                    }


            } else {
                Log.d("score", "Error: " + e.getMessage());
            }
        }
    });

Ответы [ 3 ]

2 голосов
/ 07 июня 2019

Java 8

Я думаю, что вы можете использовать потоки Java 8 и лямбда-выражения, чтобы сделать это, как показано ниже

Set<String> citasHoras = citasTaller.stream().map(citas -> citas.getString("Hora")).collect(Collectors.toSet());

horasList.removeIf(horas -> citasHoras.contains(horas));

Первая строка выше извлечет Hora из списка citasTaller для каждого элемента в Set of String.

Тогда вторая строка просто удалит "Horas" из списка horasList


Вы можете изменить свой уровень языка в Android Studio, перейдя по этой ссылке

Если вы не хотите изменить свой уровень языка , чем на уровне 7, вы можете использовать следующий код.

Java 7

for(ParseObject parseObject : citasTaller){
    String hora = parseObject.getString("Hora");
    if(horasList.contains(hora)){
        horasList.remove(hora);
    }
}
1 голос
/ 11 июня 2019

Я нашел решение этой проблемы очень простым ..

ЭТО ДАЕТ ВАМ ПОЗИЦИЮ В WITCH HORA В СПИСОКЕ.ТОГДА ВЫ ПОЛУЧАЕТЕ СПИСОК И УДАЛЯЕТЕ ДАННОЕ ПОЛОЖЕНИЕ!.

int posi=  horasList.indexOf(hora);
 horasList.remove(posi);
1 голос
/ 07 июня 2019

Вам нужно использовать Set (HashSet) для вашей задачи.Это было сделано специально для таких задач, когда нужно проверить:

Вы также можете создать Set из списка:

Set<Foo> foo = new HashSet<Foo>(myList);

...