Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 23 мар 2017, 04:13

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 142 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
СообщениеДобавлено: 12 дек 2011, 04:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 70 раз.
В этом уроке:

- делаем свой вариант списка

Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 21 сен 2016, 18:35, всего редактировалось 4 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 фев 2012, 21:52 

Зарегистрирован: 17 фев 2012, 12:43
Сообщений: 3
Откуда: Питер
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Я не очень поняла следующий момент в уроке.
Мы создали множество объектов View из xml item.xml.
у них есть идентификаторы tvName ,tvPosition и т.д.

И мы потом все эти объекты присоединили к 1 layout - linLayout.
Как такое возможно? Те в этом лайоуте несколько элементов с одинаковыми id?

Спасибо.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 фев 2012, 02:28 
Аватар пользователя

Зарегистрирован: 21 фев 2012, 20:11
Сообщений: 15
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
id уникален, так сказать, в пределах item.xml


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 фев 2012, 10:56 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 70 раз.
marmota писал(а):
Как такое возможно? Те в этом лайоуте несколько элементов с одинаковыми id?


Вы можете проверить и сами создать руками такой layout в редакторе.
Киньте туда два TextView и дайте им одинаковый id. Он ругнется желтым цветом, что дублируется, но приложение запустит без проблем.
А findViewById будет находить первый из двух.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 фев 2012, 13:45 

Зарегистрирован: 17 фев 2012, 12:43
Сообщений: 3
Откуда: Питер
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пробовала. Если в разных файлах разметки id одинаковые, то вообще даже и не ругнется...
Вобщем, странно, почему такого ограничения нет.

И значит, что я потом не смогу нужный мне из этих элементов вытащить через findViewById?

И еще я хотела уточнить - правильно ли я понимаю.
Вот мы в Activity указываем layout .
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. setContentView(R.layout.my_layout);

и он внутри себя создает кучу View, которые были описаны в my_layout.xml. Потом эти View я могу найти так
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. findViewById(R.id.my_view);

Но если я вызову метод findViewById, указав параметром какой-то id, который находится в другом файле разметки, то мне метод выдаст null?

А метод
ltInflater.inflate();
создает View на основе xml, который я могу потом приделать к текущей разметке и этот View будет находится методом findViewById.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 май 2012, 18:02 

Зарегистрирован: 10 май 2012, 17:56
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Большое спасибо за уроки, именно с них начал изучать программирование для Андроид. Небольшая поправочка по коду - вместо
int[] colors = new int[2];
...
colors[0] = Color.parseColor("#559966CC");
colors[1] = Color.parseColor("#55336699");

можно написать просто
int[] colors = { 0x559966CC, 0x55336699 };


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 май 2012, 10:36 

Зарегистрирован: 29 мар 2012, 13:06
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Как программно очистить такой layout? Это было бы полезно, если бы потребовалось обновить данные на странице без перезагрузки Activity. То есть это что-то вроде методов Clear() в C#.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 май 2012, 13:34 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 70 раз.
Andy_NTG писал(а):
Как программно очистить такой layout? Это было бы полезно, если бы потребовалось обновить данные на странице без перезагрузки Activity. То есть это что-то вроде методов Clear() в C#.


Есть такой метод - removeAllViews. В уроке 17 использую.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 май 2012, 16:26 

Зарегистрирован: 29 мар 2012, 13:06
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
А, вижу. Спасибо. Я пару книжек по Андроиду уже изучил, потому курс смотрю вразнобой. Даже после прочитанных книжек, тут есть что посмотреть, не говоря уже о том, что это неплохой справочный материал.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 май 2012, 09:57 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 70 раз.
Andy_NTG писал(а):
А, вижу. Спасибо. Я пару книжек по Андроиду уже изучил, потому курс смотрю вразнобой. Даже после прочитанных книжек, тут есть что посмотреть, не говоря уже о том, что это неплохой справочный материал.


Да я сам иногда в свои же уроки заглядываю подсмотреть чего-нить )

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 июл 2012, 11:34 

Зарегистрирован: 11 июл 2012, 11:28
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте, подскажите есть вопрос про ScrollView
у меня как и написано в уроке в ScrollView лежит LinearLayout в который я загружаю элементы, заданные xml файликами. Работает все хорошо. Но мне нужно организовать прокрутку в конец, т.е. когда добавляешь элемент если он уже не помещается на экран, то прокручивать в конец.
Существует функция scrollTo(x,y), если её повешать на кнопку и нажимать кнопку то он все прокручивает, а если в засунуть в код после добавления элемента в список то не прокручивает..
или еще как-нибудь может быть можно это реализовать?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 июл 2012, 07:59 

Зарегистрирован: 11 июл 2012, 11:28
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
все разобрался, сделал так
public void scrollDown()
{ scroll.post(new Runnable() {
public void run() {
scroll.scrollBy(0, +1500);
//scroll.fullScroll(ScrollView.FOCUS_DOWN);
}
});
}


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 ноя 2012, 23:55 

Зарегистрирован: 12 ноя 2012, 23:48
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Привет, почему у меня отображается на экране только первый элемент, хотя в логах показывает что прошло весь массив.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 ноя 2012, 13:06 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 70 раз.
xottabut писал(а):
Привет, почему у меня отображается на экране только первый элемент, хотя в логах показывает что прошло весь массив.

Скиньте сюда код, если он отличен от урока

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 ноя 2012, 18:53 

Зарегистрирован: 12 ноя 2012, 23:48
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
damager82 писал(а):
xottabut писал(а):
Привет, почему у меня отображается на экране только первый элемент, хотя в логах показывает что прошло весь массив.

Скиньте сюда код, если он отличен от урока

код ничем не отличается


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 ноя 2012, 19:03 

Зарегистрирован: 12 ноя 2012, 23:48
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
damager82 писал(а):
xottabut писал(а):
Привет, почему у меня отображается на экране только первый элемент, хотя в логах показывает что прошло весь массив.

Скиньте сюда код, если он отличен от урока

Спасибо, уже нашел ошибку)
<LinearLayout
android:id="@+id/linLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
а надо
<LinearLayout
android:id="@+id/linLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
получается в первом варианте список был горизонтальный и я его не видел.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 дек 2012, 18:35 

Зарегистрирован: 31 май 2012, 22:55
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Как узнать по какому элементу списка кликнули?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 дек 2012, 21:00 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 14:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
romanzi писал(а):
Как узнать по какому элементу списка кликнули?

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. list.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
  2.    public void onItemClick(AdapterView parentView, View childView, int position, long id) {  
  3.             //position - позиция в списке
  4.             //id - айди привязанных данных к адаптеру
  5.         }
  6.       });

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 20 дек 2012, 12:09 

Зарегистрирован: 20 дек 2012, 10:48
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Клевые у Вас уроки!

Возник такой вопрос. В цикле переменные tv... каждый раз инициализируются.
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. for (int i = 0; i < name.length; i++) {
  2.       Log.d("myLogs", "i = " + i);
  3.       View item = ltInflater.inflate(R.layout.item, linLayout, false);
  4.       TextView tvName = (TextView) item.findViewById(R.id.tvName);
  5.       tvName.setText(name[i]);
  6.       TextView tvPosition = (TextView) item.findViewById(R.id.tvPosition);
  7.       tvPosition.setText("Должность: " + position[i]);
  8.       TextView tvSalary = (TextView) item.findViewById(R.id.tvSalary);
  9.       tvSalary.setText("Оклад: " + String.valueOf(salary[i]));
  10.       item.getLayoutParams().width = LayoutParams.MATCH_PARENT;
  11.       item.setBackgroundColor(colors[i % 2]);
  12.       linLayout.addView(item);
  13.     }

Почему невозможен такой вариант?
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.  
  2.       TextView tvName = (TextView) item.findViewById(R.id.tvName);
  3.       TextView tvPosition = (TextView) item.findViewById(R.id.tvPosition);
  4.       TextView tvSalary = (TextView) item.findViewById(R.id.tvSalary);
  5.      for (int i = 0; i < name.length; i++) {
  6.          Log.d("myLogs", "i = " + i);
  7.          View item = ltInflater.inflate(R.layout.item, linLayout, false);
  8.          tvName.setText(name[i]);
  9.          tvPosition.setText("Должность: " + position[i]);
  10.          tvSalary.setText("Оклад: " + String.valueOf(salary[i]));
  11.          item.getLayoutParams().width = LayoutParams.MATCH_PARENT;
  12.          item.setBackgroundColor(colors[i % 2]);
  13.          linLayout.addView(item);
  14.     }


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 20 дек 2012, 13:41 

Зарегистрирован: 14 дек 2012, 06:19
Сообщений: 10
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Так ведь item-то у вас каждый раз разный, соответственно переменные каждый раз инициализируются именно потому, что соответствуют новым объектам.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 142 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.

Часовой пояс: UTC + 4 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB