Зачем создавать новую переменную и использовать ее, когда вы можете использовать старую переменную? - PullRequest
0 голосов
/ 29 декабря 2018

Зачем нам нужно: -

  1. Создать представление x.
  2. Затем установить x = a
  3. Затем использовать команду if нах, если вы можете напрямую использовать.

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    
        // check if the current view is reused else inflate the view
        View listItemView = convertView;
    
        if(listItemView == null){
            listItemView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
        }
    

Вместо этого, Почему мы не можем сделать это?

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

    if(convertView == null){
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
    }

Ответы [ 3 ]

0 голосов
/ 29 декабря 2018

Первый и второй примеры действительны.Только в первом случае вы создаете локальную копию вашей переменной класса.Это бесполезно.Почему разработчики так поступают?Кто знает:)

Про раздувание.Раздувать операции дорого, потому что элементы адаптера симулированы, можно раздувать вид только один раз.

0 голосов
/ 29 декабря 2018

Поскольку девелопер в некоторых случаях хотел назначить значение LayoutInflater.from(...).inflate(...), отличное от аргумента convertView, он решил не перезаписывать аргумент, а ввести новую переменную.Это хороший стиль - не изменять аргументы метода.

Итак, в случае, если convertView равно нулю, listItemView получает значение из вызова LayoutInflater, которое будет использоваться далее в методе.И тот факт, что метод был вызван с аргументом null, все еще виден.

В качестве более краткой альтернативы это можно сделать с помощью тернарного оператора Java:

View listItemView = convertView != null ?
        convertView :
        LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);

Таким образомпеременная может быть даже объявлена ​​final.

0 голосов
/ 29 декабря 2018

Второй вариант тоже отлично работает.Я не знаю, почему ты думаешь, что не можешь этого сделать.

Просто убедитесь, что вы вернули convertView после выполнения других вещей внутри.

...