#android #android-listview #android-adapter
#Android #android-listview #android-адаптер
Вопрос:
У меня есть ListView, который должен быть списками, стиль которых был определен в моем пользовательском адаптере. Но, когда я открываю ListActivity
, я получаю пустое действие.
Код адаптера:
public class alarmListCustomAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
Typeface Light;
public alarmListCustomAdapter(Context context, String[] values, String font) {
super(context, R.layout.alarmlist_layout);
this.context = context;
this.values = values;
Light = Typeface.createFromAsset(context.getAssets(), font);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.alarmlist_layout, parent, false);
TextView tV1 = (TextView) rowView.findViewById(R.id.alarm_time);
TextView tV2 = (TextView) rowView.findViewById(R.id.alarm_label);
tV2.setText(values[position]);
return rowView;
}
}
ListActivity
код-
public class alarmList extends ListActivity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
// use your custom layout
alarmListCustomAdapter adapter = new alarmListCustomAdapter(this, values, "fonts/Lato-Light.ttf");
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
Toast.makeText(this, item " selected", Toast.LENGTH_LONG).show();
}
}
Я не получаю никаких предупреждений или ошибок в моем LogCat. Что может быть не так?
Я пытаюсь изучить реализацию пользовательского адаптера здесь.
Ответ №1:
Измените это
super(context, R.layout.alarmlist_layout);
Для
super(context, R.layout.alarmlist_layout,values);
Поскольку у вас есть R.layout.alarmlist_layout
, нет необходимости снова раздувать макет getView
. Прочитайте комментарий blackbelt ниже.
Комментарии:
1. также вы могли бы предложить ему удалить логику раздувания представления, поскольку super позаботится об этом.
2. @blackbelt да, я все время забываю, что вы указывали на это ранее для аналогичного сообщения
3. @Raghunandan как мне удалить инфлятор?
findViewbyID
похоже, без него не работает.