Android: используя свой собственный макет, чтобы заполнить скроллвью - PullRequest
1 голос
/ 01 сентября 2011

Я изучал и создавал приложение для Android с нуля, и я врезался в стену.Я прочитал на странице разработчика Android о настраиваемых компонентах пользовательского интерфейса и решил, что смогу использовать их для размещения сообщений для страницы чата в своем приложении.

Я создал файлы XML, но не знаю, как вызвать эти макетыфайлы из моего кода.В данный момент я читаю свои сообщения из массива, а затем прохожу цикл, создавая TextView и устанавливая необходимые свойства для него через код, а затем добавляю его в RelativeLayout в scrollView.Это все работает нормально, но я хочу, чтобы в моих сообщениях отображалась дополнительная информация (например, время и если получатель получил / прочитал ее), именно здесь приходят новые XML-файлы, у них уже настроены поле и макет, поэтому яЯ подумал, что я мог бы просто вызвать их, установить некоторые переменные и покончить с этим.

Как я уже говорил, проблема в том, что я понятия не имею, как ссылаться на файлы макета внутри моего кода.Я уже прочитал все статьи на странице разработчика Android, касающиеся создания ваших собственных элементов пользовательского интерфейса, и я также погуглил свою справедливую долю, но, видимо, я либо единственный, кто подумал сделать это таким образом, либо я могуне найти правильные ключевые слова для этого.Так что теперь я спрашиваю вас, ребята.Спасибо за любые ответы, которые вы, ребята, можете дать мне.

Редактировать: Я проводил некоторые исследования и думаю, что мне нужно написать свой собственный адаптер для работы с моимсобственный класс сообщений и мой собственный XML-макет для этих сообщений.Однако я не знаю, с чего начать, так как не могу найти хорошую документацию о том, как написать свои собственные адаптеры.

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Для тех, кому интересно, как я это сделал (и если вы сами столкнулись с той же проблемой):
Для каждого списка, который я хотел создать со своим собственным случайным набором данных, я создал свой собственный адаптер, который расширяет BaseAdapter. Просто переопределив метод getView, можно раздуть и заполнить различные части ваших элементов списка.
Я использовал этот учебник, чтобы помочь мне в создании моих собственных адаптеров.

0 голосов
/ 06 сентября 2011

Вы можете сделать следующее, но это создаст новый TextView, игнорирующий любой макет, который у вас был:

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView);
TextView textView = new TextView(this);
textView.setText(message);
scrollView.addView(textView);
textView.setText(timeAndDate);
scrollView.addView(textView);

Лично я никогда не использовал ScrollView, поэтому я не уверен на 100% в вышеизложенномфункциональность, но это соответствует моему опыту с LinearLayout и RelativeLayout.

В качестве альтернативы, так как у вас уже есть свой макет customr, вы бы сделали:

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView);
TextView textView = (TextView)findViewById(R.id.textView);
textView.setText(messageTimeDate);
scrollView.addView(textView);

По сути, вы могли бы справиться с этим.Я не уверен на 100%, если вы могли бы добавить textView более одного раза в любой реализации.Если это вызывает исключение, вы можете использовать список массивов текстовых представлений, таких как:

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView);
ArrayList<TextView> textView = new ArrayList<TextView>();
textView.add((TextView)findViewById(R.id.textView));
textView.get(index).setText(messageTimeDate);
scrollView.addView(textView.get(index).getId());

Куда бы я ни поместил textView для идентификатора, вы можете использовать message или timeDate и делать два из каждого, что язатем ссылка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...