Понимание примера Arraydapter

1

Мне нужна помощь, объясняющая следующий пример ниже (c) CommonsWare. Я знаю, что это делает подкласс Arraydapter для создания пользовательских списков просмотров.

Однако я не понимаю эти строки:

    IconicAdapter() {
        super(DynamicDemo.this, R.layout.row, items);
    }

Что делает super()? И к чему будут аргументы? Почему мне нужно передать "элементы" в качестве аргумента, но не другой массив, который называется "рейтинг"?

Полный код:

public class DynamicDemo extends ListActivity {
    private String[] items = { "lorem", "ipsum", "dolor", "sit", "amet",
            "consectetuer", "adipiscing", "elit", "morbi", "vel", "ligula",
            "vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat",
            "placerat", "ante", "porttitor", "sodales", "pellentesque",
            "augue", "purus" };

    private String[] rating = { "25%", "65%", "95%", "55%", "15%", "25%r",
            "25%", "25%", "25%", "25%", "25%", "25%", "25%", "25%", "25%",
            "25%", "25%", "25%", "25%", "25%", "25%", "25%", "25%", "25%",
            "25%" };

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        setListAdapter(new IconicAdapter());
    }

    public void onListItemClick(ListView parent, View v, int position, long id) {
        selection.setText(items[position]);
    }

    class IconicAdapter extends ArrayAdapter<String> {
        IconicAdapter() {
            super(DynamicDemo.this, R.layout.row, items);
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = getLayoutInflater();
            View row = inflater.inflate(R.layout.row, parent, false);
            TextView label = (TextView) row.findViewById(R.id.label);
            TextView label2 = (TextView) row.findViewById(R.id.label2);

            label.setText(items[position]);
            label2.setText(rating[position]);

            return (row);
        }
    }
}
Теги:

2 ответа

0
Лучший ответ

Что делает super()?

Это вызывает выполнение конструктора суперкласса. Это требование в Java.

И какие аргументы будут хорошими для?

Аргументы требуются конструктором суперкласса.

Почему мне нужно передать "элементы" в качестве аргумент, но не другой массив, который называется "рейтинг"?

В моем примере нет rating. Я не написал код, который вы вставили выше.

  • 0
    Спасибо за ваш ответ. Я изменил пример, пытаясь учиться. Итак, конструктор суперкласса: ArrayAdapter (Контекст контекста, объекты int textViewResourceId, List <T>)? Я хочу передать несколько массивов в arrayadapter. Каков «правильный» способ сделать это?
  • 0
    @droidgren: вы не можете передать несколько массивов в ArrayAdapter . Вместо этого вы должны создать один массив из более сложных объектов.
Показать ещё 7 комментариев
0

super - это вызов конструктора базового класса. Поэтому в вашем случае вы вызываете конструктор ArrayAdapter. Чтобы узнать, какие аргументы "хороши" для него, вам нужно увидеть объявление конструктора базового класса

Обратитесь к учебнику по Java за дополнительной информацией - http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/java/IandI/super.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню