Урок 42. Список - ListView

Обсуждение уроков
eternal_ego
Сообщения: 10
Зарегистрирован: 14 дек 2012, 05:19

Re: Урок 42. Список - ListView

Сообщение eternal_ego » 15 янв 2013, 12:47

Эта функция всё время 0 возвращает, каким бы ни был цвет. В доках пишут "Returns The known solid color background for this view, or 0 if the color may vary".

UPDATE: кажется, это реально какая-то проблема. Вот человек спрашивает сходное, а ему объясняют, что он в принципе не может получить цвет бэкграунда, поскольку его не существует, только если сам же его не задал...
https://groups.google.com/forum/?fromgr ... RC66UUQ73c

И как так жить... Нет, ну можно придумать какой-нибудь костыль конкретно для моей ситуации - например играть с прозрачностью, получая за счёт этого цвет вьюшки, "чуть отличный" от цвета её фона, но всё равно как-то печально.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 15 янв 2013, 14:10

та можно получить цвет вьюшки, вы наверное пытаетесь его получить тогда когда она ещё не успелась прорисоваться
R.id.team
Политика на форуме запрещена

eternal_ego
Сообщения: 10
Зарегистрирован: 14 дек 2012, 05:19

Re: Урок 42. Список - ListView

Сообщение eternal_ego » 15 янв 2013, 14:53

Нет, я совершенно точно пробую это когда она точно есть (т.е. читаю, отладки ради, по клику на кнопочку). Перепробовал так со всеми вьюшками (и тем, которым вообще нигде цвет не задаю, и тем, кому прописываю бэкграунд в xml) - везде нули. Наверное, это какой-то другой цвет, не тот который показывается :)))) Хотя, судя по фразе в андроидовских доках, этот цвет "may vary", т.е. видимо система понятия не имеет, какой он сейчас, лол.

max546
Сообщения: 8
Зарегистрирован: 13 янв 2013, 21:41

Re: Урок 42. Список - ListView

Сообщение max546 » 15 янв 2013, 21:59

rezak90 писал(а):
max546 писал(а):Здравствуйте, подскажите пожалуйста как программно добавить и отобразить элемент в списке, допустим, я нажимаю на кнопку и в списке появляется новая позиция с содержанием из переменной- x;. Желательно в коде, уже третий день по гуглам лазию, хотя сам понимаю что решение не такое и сложное. Спасибо
для этого нужно менять данные с которыми связан адаптер, потом дать команду адаптеру сделать апдейт notifyDataSetChanged()
Спасибо, разобрался
Для добавления элемента, вместо массива удобнее использовать ArrayList

Volha
Сообщения: 61
Зарегистрирован: 20 авг 2012, 17:39

Re: Урок 42. Список - ListView

Сообщение Volha » 22 янв 2013, 14:10

Здравствуйте!
У меня есть примерно вот такая разметка:

Код: Выделить всё

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
	<LinearLayout 
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"
	    android:orientation="vertical"
	     >
	   	<TextView 
	   	    android:layout_width="match_parent"
	   	    android:layout_height="wrap_content"
	   	    android:text="some text"
	   		/>
		<ListView 
		    android:id="@+id/lv"
		    android:layout_width="match_parent"
		    android:layout_height="match_parent"
		    >
		</ListView>
	</LinearLayout>
</ScrollView>

ListView сворачивается до 2х элементов и остальные не видно, что можно сделать?
Почитала предыдущие комменты, вставляла где можно layout_weight="1", но так и поборола проблему(
Подскажите, пожалуйста!

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение damager82 » 24 янв 2013, 14:09

Список в Scroll обычно не вставляют. Может есть другие варианты, как разметку сделать?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Volha
Сообщения: 61
Зарегистрирован: 20 авг 2012, 17:39

Re: Урок 42. Список - ListView

Сообщение Volha » 25 янв 2013, 13:11

Я уже почитала, что гугл такое не одобрямс...
Решила проблему 2мя способами
1) Там, где внизу списка только кнопка, добавила её в футер.
2) Там, где список посреди огромного числа данных, отказалась от ListView и вручную создаю строчки... Конечно, не так удобно, как с адаптером, но хоть как-то =( Если есть более правильный способ - буду благодарна за советы)

Mitsyk
Сообщения: 2
Зарегистрирован: 04 фев 2013, 23:56

Re: Урок 42. Список - ListView

Сообщение Mitsyk » 07 фев 2013, 07:15

Обмен пунктами между ListView.
Доброго времени суток, помогите начинающему разработчику. Есть задача: с одного списка нужно перетаскивать элементы в другой, как и с помощью чего можно реализовать данную задачу?Скрин по ссылке....http://s42.radikal.ru/i095/1302/e0/31b46bb4aa9d.png
Помогите плз!!!!!!

beeline09
Сообщения: 33
Зарегистрирован: 23 сен 2012, 23:10

Re: Урок 42. Список - ListView

Сообщение beeline09 » 09 фев 2013, 09:43

Всем доброго времени суток. Возникла следующая проблема...
Мне нужно заполнить ListView каждой новой строчкой из String. Но не просто заполнить, а еще и отобрать нужное значение после определенного символа. Вот допустим у меня вот что в тексте:
  • Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 002: ID 1d6b:0002 Device1
    Bus 001 Device 003: ID 1d6b:0002 Device2
    Bus 001 Device 004: ID 1d6b:0002 Device3
Да, да. Это ответ lsusb)))

Так вот, в случае с, например первой строкой, мне нужно отобразить в первом элементе listview "Linux Foundation 2.0 root hub". С этим я справился вот так:

Код: Выделить всё

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
			String line = reader.readLine();
String str1 = (line.substring(line.indexOf("ID") + 13));
			mnt_info.setText(str1);
И это не проблема отсеять так все ненужное.

Проблема в том, как каждую новую строчку занести в массив, но перед этим ее "просеять" через String str1 = (line.substring(line.indexOf("ID") + 13));

А потом уже из массива я конечно смогу заполнить listview.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 09 фев 2013, 14:24

регулярки нормальные написать нужно для нормального парсинга
R.id.team
Политика на форуме запрещена

beeline09
Сообщения: 33
Зарегистрирован: 23 сен 2012, 23:10

Re: Урок 42. Список - ListView

Сообщение beeline09 » 09 фев 2013, 15:06

rezak90 писал(а):регулярки нормальные написать нужно для нормального парсинга
А можно по подробнее? Пример можете привести?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 09 фев 2013, 20:11

что бы овладеть знанием регулярных выражений нужно иметь нестандартный состав ума))) я таким не владею... можете сами попробовать, примеров полно
R.id.team
Политика на форуме запрещена

Озорная Свинья
Сообщения: 59
Зарегистрирован: 02 фев 2013, 00:03

Re: Урок 42. Список - ListView

Сообщение Озорная Свинья » 09 фев 2013, 20:26

Может как то так: String str1 = (line.substring(33, line.length()));

beeline09
Сообщения: 33
Зарегистрирован: 23 сен 2012, 23:10

Re: Урок 42. Список - ListView

Сообщение beeline09 » 09 фев 2013, 22:05

Озорная Свинья писал(а):Может как то так: String str1 = (line.substring(33, line.length()));
Ну я так же отбираю значения. Это не проблема. Проблема в том, как сделать такой цикл, который сможет построчно заносить текст в массив, который в свою очередь заполнит listview.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 09 фев 2013, 22:05

Озорная Свинья писал(а):Может как то так: String str1 = (line.substring(33, line.length()));
во-первых так сразу выскочит IndexOutOfBoundsException
во-вторых, а если необходимая строка будет начинаться с 34 символа?
R.id.team
Политика на форуме запрещена

beeline09
Сообщения: 33
Зарегистрирован: 23 сен 2012, 23:10

Re: Урок 42. Список - ListView

Сообщение beeline09 » 09 фев 2013, 22:20

rezak90 писал(а):
Озорная Свинья писал(а):Может как то так: String str1 = (line.substring(33, line.length()));
во-первых так сразу выскочит IndexOutOfBoundsException
во-вторых, а если необходимая строка будет начинаться с 34 символа?
Вот именно! У меня очень хороший вариант отбирать значние после "ID". Зачем новые? Проблема была не в этом. Мне кто-нибудь сможет помочь?

Озорная Свинья
Сообщения: 59
Зарегистрирован: 02 фев 2013, 00:03

Re: Урок 42. Список - ListView

Сообщение Озорная Свинья » 09 фев 2013, 22:46

>>во-первых так сразу выскочит IndexOutOfBoundsException
почему?
>>>во-вторых, а если необходимая строка будет начинаться с 34 символа?
судя по тому что выложено выше с 33 ну или с 34, я тут щетал может ошибся
>>>>Проблема была не в этом. Мне кто-нибудь сможет помочь?
парси значение и заноси в массив, что у тебя не получается?

beeline09
Сообщения: 33
Зарегистрирован: 23 сен 2012, 23:10

Re: Урок 42. Список - ListView

Сообщение beeline09 » 09 фев 2013, 22:52

Озорная Свинья писал(а):>>во-первых так сразу выскочит IndexOutOfBoundsException
почему?
>>>во-вторых, а если необходимая строка будет начинаться с 34 символа?
судя по тому что выложено выше с 33 ну или с 34, я тут щетал может ошибся
>>>>Проблема была не в этом. Мне кто-нибудь сможет помочь?
парси значение и заноси в массив, что у тебя не получается?
Дак вот в том-то и дело, что не догоняю как :-( Ну неопытный я еще - только учусь. А задача стоит и ее надо решить. Есть текст со строками. Как сделать цикл, который будет заносить в массив отпарсенные значения? Отпарсить я могу и здесь мне не нужны регулярки - тут все просто, но как текст из каждой строки отпарсить и ЗАНЕСТИ В МАССИВ? Да, знаю это вроде просто, но я догнать не могу....

Озорная Свинья
Сообщения: 59
Зарегистрирован: 02 фев 2013, 00:03

Re: Урок 42. Список - ListView

Сообщение Озорная Свинья » 09 фев 2013, 23:00

String str[] = new String[10];
for (int i = 0; i <= 9; i++) {
str = line.substring(...);
}
как то так, хотя я тоже не опытный)))

beeline09
Сообщения: 33
Зарегистрирован: 23 сен 2012, 23:10

Re: Урок 42. Список - ListView

Сообщение beeline09 » 09 фев 2013, 23:11

Озорная Свинья писал(а):String str[] = new String[10];
for (int i = 0; i <= 9; i++) {
str = line.substring(...);
}
как то так, хотя я тоже не опытный)))


У меня так не то что-то получилось, но с помощью вас я смог догнать до рабочего метода. Вот как он выглядит:

Код: Выделить всё

BufferedReader reader = new BufferedReader(new InputStreamReader(
					p.getInputStream()));
			List<String> list = new ArrayList<String>();
			String strLine;

			while ((strLine = reader.readLine()) != null) {

				strLine = (strLine.substring(strLine.indexOf("ID") + 13));
				list.add(strLine);

			}

			// создаем адаптер
			ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
					android.R.layout.simple_list_item_1, list);

			// присваиваем адаптер списку
			lv1.setAdapter(adapter);
Но спасибо большое за помощь!!! ;-)

Ответить