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

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

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

Сообщение rezak90 » 09 фев 2013, 23:54

>>во-первых так сразу выскочит IndexOutOfBoundsException
почему?
потому что нужно length() - 1, стоит объяснять почему?
beeline09
а если исходный текст будет не корректный? Куча ошибок полезет.
R.id.team
Политика на форуме запрещена

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

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

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

rezak90 писал(а):
>>во-первых так сразу выскочит IndexOutOfBoundsException
почему?
Вот с этим я мучался долго... Но уже в курсе )))
потому что нужно length() - 1, стоит объяснять почему?
beeline09
а если исходный текст будет не корректный? Куча ошибок полезет.
Не будет. Он либо будет пустым, либо будет с инфой необходимой в строгом формате.
И на всякий все в try catch )))

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

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

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

>>потому что нужно length() - 1, стоит объяснять почему?
String text = "12345";
text = text.substring(3, text.length());
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();

gad007
Сообщения: 10
Зарегистрирован: 06 фев 2013, 20:47

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

Сообщение gad007 » 18 фев 2013, 11:56

скажите пожалуйста если список содержит большое количество ячеек с названиями городов (к примеру 300) как организовать поиск по названию города?

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

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

Сообщение beeline09 » 18 фев 2013, 12:20

gad007 писал(а):скажите пожалуйста если список содержит большое количество ячеек с названиями городов (к примеру 300) как организовать поиск по названию города?
Присоединяюсь к вопросу. Или же легче БД сделать?


gad007
Сообщения: 10
Зарегистрирован: 06 фев 2013, 20:47

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

Сообщение gad007 » 18 фев 2013, 18:28

а не могли бы Вы хотя бы в двух словах объяснить на русском, а то по ссылке всё на английском. спасибо.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

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

Сообщение Foenix » 18 фев 2013, 18:49

gad007 писал(а):а не могли бы Вы хотя бы в двух словах объяснить на русском, а то по ссылке всё на английском. спасибо.
никто здесь не будет переводить, без английского прогресс невозможен....
нужно списку внедрить интерфейс Filterable. Что это такое - читайте вот тут..http://developer.android.com/reference/ ... rable.html
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

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

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

Сообщение beeline09 » 18 фев 2013, 21:50

Озорная Свинья писал(а):http://stackoverflow.com/questions/3550 ... h-listview
У меня проблема возникла... Когда текст ввожу, результаты фильтруются и отображается все как нужно. Но!
Айдишки элементов сбиваются на новое значение. Т.е. Если раньше мой элемент имел айди 7, то например в фильтре он во второй позиции, а значит имеет теперь айди = 1. Есть какая-нибудь возможность сохранить айдишки для элементов?

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

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

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

По идее так и должно быть, и если у тебя возникают проблемы с OnClick элемента, то тебе нужно менять концепцию и не привязываться к ItemIndex ListView, а к id элемента, как то так)

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

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

Сообщение beeline09 » 19 фев 2013, 07:13

Озорная Свинья писал(а):По идее так и должно быть, и если у тебя возникают проблемы с OnClick элемента, то тебе нужно менять концепцию и не привязываться к ItemIndex ListView, а к id элемента, как то так)
Ну так-то это так )) Но я вот и не могу догнать как это реализовать. Может и плохо гуглил...Но, можете хотя бы какой-то похожий примерчик показать?

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

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

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

Ну если список создаётся динамически, можно получить имя города и делать с ним что угодно

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

public class SharActivity extends Activity {
	ListView listView;
	EditText editText;
	ArrayAdapter<String> adapter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.shar);
		listView = (ListView) findViewById(R.id.listView1);
		editText = (EditText) findViewById(R.id.editText1);
		ArrayList<String> text = new ArrayList<String>();
		adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, text);
		listView.setAdapter(adapter);
		listView.setTextFilterEnabled(true);
		    for (int i = 0; i <= 9; i++) {				    			
			  text.add(String.valueOf(i));
		      adapter.notifyDataSetChanged();
			}
		listView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				Toast.makeText(getApplicationContext(), adapter.getItem(position), Toast.LENGTH_LONG).show();
			}
		    });	     
	    editText.addTextChangedListener(new TextWatcher() {
	        @Override
	        public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3)
	        {
	            // TODO Auto-generated method stub
	        }
	        @Override
	        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3)
	        {
	            // TODO Auto-generated method stub
	        }
	        @Override
	        public void afterTextChanged(Editable str)
	        {
	            // TODO Auto-generated method stub
	            adapter.getFilter().filter(str);
	        }
	    });
	}	
}

rjlexx
Сообщения: 7
Зарегистрирован: 20 мар 2013, 22:30

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

Сообщение rjlexx » 20 мар 2013, 22:38

А можно заставить ListView формировать элементы горизонтально через SimpleAdapter?

Аватара пользователя
dens
Сообщения: 47
Зарегистрирован: 03 фев 2013, 00:14

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

Сообщение dens » 23 мар 2013, 14:08

Ему надо параметр "orientation" просто задать, если я правильно тебя понимаю.

rjlexx
Сообщения: 7
Зарегистрирован: 20 мар 2013, 22:30

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

Сообщение rjlexx » 26 мар 2013, 14:20

dens писал(а):Ему надо параметр "orientation" просто задать, если я правильно тебя понимаю.
В ListView нет вроде такого параметра.

worldmen
Сообщения: 12
Зарегистрирован: 08 апр 2013, 00:04

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

Сообщение worldmen » 08 апр 2013, 22:29

Выполнил этот урок, получилось практически все кроме одной мелочи. Почему-то фон как был белым так и остался, хотя я менял его для my_list_item.xml:

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

<?xml version="1.0" encoding="utf-8"?>
<TextView
		 xmlns:android="http://schemas.android.com/apk/res/android"
		 android:id="@+id/textView1"
		 android:layout_width="match_parent"
		 android:layout_height="wrap_content"
		 android:gravity="center_horizontal"
		 android:padding="5dp"
		 android:text="@string/text_view"
		 android:textColor="#00FF00"
		 android:textSize="24sp">
</TextView>
</TextView>
Изображение

файл activity_main.xml:

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

<RelativeLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <ListView
        android:id="@+id/lvMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="14dp" >
    </ListView>

</RelativeLayout>
Изображение И получилось так:
Изображение
Код файла MainActivity.java:

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

public class MainActivity extends Activity {

	String[] names = { "Иван", "Марья", "Петр", "Антон", "Даша", "Борис", "Костя", "Игорь", "Анна", "Денис", "Андрей" };
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		// находим список
	    ListView lvMain = (ListView) findViewById(R.id.lvMain);

	    // создаем адаптер
	    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,  R.layout.my_list_item, names);
	  	    
	    // присваиваем адаптер списку
	    lvMain.setAdapter(adapter);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

Napalm
Сообщения: 46
Зарегистрирован: 17 апр 2013, 11:48

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

Сообщение Napalm » 21 апр 2013, 01:24

Доброго всем здравия!

Вот несколько вопросов, которые не смог разобрать самостоятельно по урокам:

1. как обратиться к списку из отдельного потока?

поясню:
есть список. есть поток, в котором происходит считывание данных из БД и нужно заносить эти данные в список.

Делаю это так:
[syntax=java]final ListView mainlist = (ListView) findViewById(R.id.mainlist);
ArrayList<String> themes = new ArrayList<String>();

final ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, themes);
mainlist.setAdapter(adapter);[/syntax]
затем в потоке пытался добавить в нужном месте
[syntax=java]themes.add(0, string);[/syntax]
Ругается на переменную массива.
Вынес это в отдельную функцию, а из потока её просто вызываю. Ситуация идентична.

И второй вопрос:
Нигде не смог найти как добавить subitem в списке.
Он так логично смотрится, можно использовать как описание пункта или ещё для чего, но везде только про добавление непосредственно самих пунктов.

Заранее благодарю!

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

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

Сообщение rezak90 » 21 апр 2013, 09:12

ну уже ж не первый раз, если ругается то что за подсказку/ошибку выдаёт эклипс....
про subitem ничего не понял
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

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

Сообщение Foenix » 21 апр 2013, 12:44

Napalm, давай код, давай вместе с твоим оператором хоть где-нибудь что был, давай лог - это обязательно.
Что же касается подпунктов - ты имеешь ввиду иерархию? тогда это другой компомнент, не список. По нему тоже есть урок, загляни, может это то, что нужно?
http://startandroid.ru/ru/uroki/vse-uro ... lelistview
Если не иерархия, то есть такая штука как заголовки в списке. Все сама хочу себе сделать, да руки не доходят.
http://code.google.com/p/android-amazing-listview/
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

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

Сообщение Foenix » 21 апр 2013, 12:45

Кстати, вот видео от гугла про листвью
http://www.youtube.com/watch?v=wDBM6wVEO70&t=17m38s

там парень рассказывает интересно, я прям влюбилась.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить