Как я могу создавать иконки для пунктов меню в ListView Андроида?

голоса
21

Я использую ListViewдля отображения главного экрана моего приложения.
Основной экран по существу , menuчтобы попасть в различные разделы приложения. В настоящее время у меня есть ListViewсодержимое которого добавляются программно в onCreateметоде.

Вот фрагмент кода, который делает это:

String[] mainItems = {
    Inbox, Projects, Contexts, Next Actions
}

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

    setListAdapter(new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, mainItems));
    registerForContextMenu(getListView());
}

Таким образом, меню, по существу , просто куча узлов с текстом , содержащимся в массиве mainItems. Я знаю , что я могу создать макет XML (т.е. R.layout.mainMenu_item) , который имеет ImageView и TextView в нем, но я не уверен , как установить значок ImageView в. Я видел , что есть setImageResouce метод (интермедиат кубовых), но способ использовать это при создании с ArrayAdapter ускользает меня. Есть лучший способ сделать это?

Задан 13/11/2008 в 20:56
источник пользователем
На других языках...                            


2 ответов

голоса
16

То, что я обычно делаю для элемента управления ListView является реализация моего собственного адаптера путем расширения удобного класса BaseAdapter. Одним из абстрактных методов вы реализуете будет GetView (), как и предыдущий плакат упомянутых. Оттуда вы можете раздуть макет, содержащий ImageView, получить ссылку на него с помощью findViewById и установить изображение на любую вытяжку вы добавили в свои ресурсы.

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

    View row = inflater.inflate(R.layout.menu_row, null);

     ImageView icon = (ImageView) row.findViewById(R.id.icon);
     icon.setImageResource(..your drawable's id...);

     return view;
}
Ответил 03/12/2008 в 23:46
источник пользователем

голоса
1

Из документов Google для ArrayAdapter.

Для того, чтобы использовать что-то другое, чем TextViews для отображения массива, например, ImageViews, или иметь некоторые данные, кроме ToString () Результаты заполнения мнения, переопределить GetView (ИНТ View, ViewGroup), чтобы вернуть тип зрения вы хотите.

Ответил 27/11/2008 в 00:43
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more