Мне нужна помощь, объясняющая следующий пример ниже (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);
}
}
}
Что делает super()?
Это вызывает выполнение конструктора суперкласса. Это требование в Java.
И какие аргументы будут хорошими для?
Аргументы требуются конструктором суперкласса.
Почему мне нужно передать "элементы" в качестве аргумент, но не другой массив, который называется "рейтинг"?
В моем примере нет rating
. Я не написал код, который вы вставили выше.
super - это вызов конструктора базового класса. Поэтому в вашем случае вы вызываете конструктор ArrayAdapter. Чтобы узнать, какие аргументы "хороши" для него, вам нужно увидеть объявление конструктора базового класса
Обратитесь к учебнику по Java за дополнительной информацией - http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/java/IandI/super.html
ArrayAdapter
. Вместо этого вы должны создать один массив из более сложных объектов.