2009-09-10 6 views
2

Мне нужно создать представление без XML. Я получаю идентификатор вида методом getID вида, но получаю ResourceNotFoundException. Я попытался использовать этот идентификатор для метода setID, но он больше не работает.Android-просмотр без xml

+3

Просьба уточнить, вставить код, объясните, что идентификатор вы говорите ... –

+0

Полностью согласен, позволяет увидеть код, а затем мы можем помочь. –

ответ

1

Если вы не объявили ваш взгляд и поставить идентификатор на него в макете файл XML, вы не можете получить его с

findViewById(int)

Если вы создаете ваш взгляд без XML, вы должны управлять без идентификатора ресурса. Вы просто создаете представление и называете его, а затем используете имя для работы с ним.

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

Вы все же хотите НЕ объявить его в XML? Обычно, когда вы запускаете проект, вы не можете видеть, как вы можете что-то сделать с компоновкой XML, и выберите программное представление большинства представлений. После того, как вы продвигаетесь вперед по проекту или собираете больше опыта, почти во всех случаях вы видите, что могли бы сделать это с помощью XML.

+0

К сожалению, я не могу использовать XML-макет ... причины ... Моя проблема заключается в том, что я хочу использовать ListView, заполненный с помощью ArrayAdapater, и для конструктора ArrayAdapter нужен идентификатор вида! – Arutha

+0

Ну, в этом случае используйте метод setId (int) класса View. –

+0

Это то, что я сделал, но я получаю ResourceNotFoundException во время выполнения – Arutha

0

Если вы попытаетесь напечатать getId(int) вида, вы получаете действительный идентификатор?

Попробуйте использовать findViewById(int) в правильном контексте, например. yourContext.findViewById(int);

+0

да, я получаю id, указанный мной в методе setID, но findViewByID возвращает исключение (ResourceNotFound) – Arutha

+0

Попробуйте использовать yourActivity.findViewById (int); или yourActivity.getBaseContext(). findViewById, чтобы найти представление. Если это не сработает, я думаю, вам нужно сделать ссылку на созданный View где-нибудь, чтобы вы сразу увидели представление – Thys

1

Я думаю, что проблема следующая. Когда вы вызываете findViewById(), он ищет этот вид в дереве отображения. Таким образом, чтобы получить представление из дерева, вы должны были добавить свой вид к дереву с помощью функции addView(). Если вы этого не сделали, возможно, он не сможет найти представление в дереве.

0

это легко.

lv = new ListView(this); lv.setId(android.R.layout.simple_list_item_1);

SimpleCursorAdapter ca = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, from, to);