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

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

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

Сообщение Foenix » 14 апр 2014, 21:38

allzp, если хотите что-то уточнить, то пишите тут, а не в личку. Я не ответила не из вредности, а потому что вы нечетко поставили задачу - я не могу даже понять что вы хотите. Пишите кратко четко и пунктами. Пожалуйста. Я постараюсь помочь.
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 » 14 апр 2014, 21:51

vapsel писал(а):Интересует как (в смысле код) можно виделить один или несколько элементов списка. Например, цвет, горизонтальную центровку (гравити) или размер. Подскажите, пожалуйста, номер урока или ссылку на статью с понятными объяснениями и желательно кодом, так как еще новичок.

Спасибо
делать надо так
http://developer.android.com/design/pat ... ction.html
а код и все такое в этой же статье.
Вот ссылка оттуда
http://developer.android.com/guide/topi ... s.html#CAB
R.id.team

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

allzp
Сообщения: 7
Зарегистрирован: 10 апр 2014, 04:23

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

Сообщение allzp » 15 апр 2014, 23:32

Foenix писал(а): allzp, если хотите что-то уточнить, то пишите тут, а не в личку. Я не ответила не из вредности, а потому что вы нечетко поставили задачу - я не могу даже понять что вы хотите. Пишите кратко четко и пунктами. Пожалуйста. Я постараюсь помочь.
просто тема топика не та
Foenix писал(а):
allzp писал(а): спасибо но у меня немного другая структура.
из главного окна я перехожу на список (например марки автомобилей) где выбрав нужный подпункт (марку) я перехожу в новое Activity, которое,собственно, и необходимо заполнить (история марки и другая стат. информация ,список моделей и т.д ). то есть множество текстовых полей и таблиц.
можно ли создать БД с необходимой инфой чтоб Activity заполнялись в соответствии с id определенного поля/ячейки?
Можно.
1.хочу реализовать
2.прошу направить на необходимые источники.было бы хорошо если с примерами

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

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

Сообщение Foenix » 16 апр 2014, 00:32

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

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

AlexVinn
Сообщения: 81
Зарегистрирован: 04 апр 2014, 04:56

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

Сообщение AlexVinn » 27 апр 2014, 16:12

Всем доброго времени.
Создал всё как по уроку.
Мой xml (my_list_item.xml) - работает, а вот который системный (simple_list_item_1.xml) не хочет.
Не видит его и всё тут. И доступа к нему нет почему-то, хотя он есть физически (Android XML Editor cannot process this input.). Объясните, плз, что не так делаю. Строки 73-74. Спс.

[syntax=java]package com.example.p0421_listview;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}

@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;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}

/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {
}

String[] names = { "Иван", "Марья", "Петр", "Антон", "Даша", "Борис",
"Костя", "Игорь", "Иван", "Марья", "Петр", "Антон", "Даша",
"Борис", "Костя", "Игорь", "Иван", "Марья", "Петр", "Антон",
"Даша", "Борис", "Костя", "Игорь", "Иван", "Марья", "Петр",
"Антон", "Даша", "Борис", "Костя", "Игорь" };

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
// находим список
ListView lvMain = (ListView) rootView.findViewById(R.id.lvMain);

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

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getActivity(), R.layout.simple_list_item_1, names);

// присваиваем адаптор списку
lvMain.setAdapter(adapter);

return rootView;
}
}

}
[/syntax]
Тут должна быть подпись.

Donart
Сообщения: 114
Зарегистрирован: 06 ноя 2013, 08:59

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

Сообщение Donart » 27 апр 2014, 21:04

AlexVinn писал(а): Мой xml (my_list_item.xml) - работает, а вот который системный (simple_list_item_1.xml) не хочет.
android.R.layout.simple_list_item_1

Ermalay
Сообщения: 1
Зарегистрирован: 12 июн 2014, 15:34

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

Сообщение Ermalay » 12 июн 2014, 15:42

Здравствуйте.

У меня Eclipse ругается на my_list_item и говорит, что "my_list_item cannot be resolved or is not a field"

вот тут:

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

 // создаем адаптер
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.my_list_item, names);
Файл my_list_item.xml создан.
Подскажите, в чём проблема?
Спасибо.

Viewer
Сообщения: 180
Зарегистрирован: 30 апр 2014, 11:42

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

Сообщение Viewer » 13 июн 2014, 07:49

Нужно указывать
R.layout.my_list_item (а не android.R.layout.my_list_item)

Temir_lan
Сообщения: 1
Зарегистрирован: 01 июл 2014, 10:11

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

Сообщение Temir_lan » 01 июл 2014, 10:16

Подскажите как сделать чтобы в listview под основным текстом был маленький, как на прошлом уроке.

SevenXP
Сообщения: 113
Зарегистрирован: 21 июл 2013, 18:20

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

Сообщение SevenXP » 21 июл 2014, 16:32

Парни может кто что подскажет:
У меня есть VerticalScroll он скролит imageView. Но я хочу ImageView повторно использовать.
Я попробовал использовать Gallery но она гадит сам ImageView + Делает большие отступы с лева, права и игнорирует padding and marging.

ListView позволяет скролить(Horizontal) горизонтально и использовать повторно View (convertView).
Есть похожий компонент, который принимает BaseAdapter для вертикального(Vertical) скрола ?

Пробовал ListView поворачивать, повернул, а вод жест скрола остался тот же. :)

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

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

Сообщение anber » 21 июл 2014, 16:37

И все-таки ListView скроллит вертикально - сверху вниз, тебе я понимаю нужен элемент который скроллит горизонтально - слева-направо?
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

SevenXP
Сообщения: 113
Зарегистрирован: 21 июл 2013, 18:20

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

Сообщение SevenXP » 21 июл 2014, 16:41

anber писал(а):И все-таки ListView скроллит вертикально - сверху вниз, тебе я понимаю нужен элемент который скроллит горизонтально - слева-направо?
Да попутал стороны.

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

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

Сообщение anber » 21 июл 2014, 16:51

SevenXP писал(а):
anber писал(а):И все-таки ListView скроллит вертикально - сверху вниз, тебе я понимаю нужен элемент который скроллит горизонтально - слева-направо?
Да попутал стороны.
https://github.com/sephiroth74/Horizont ... leListView

Описание со SO:
on Jul 24, 2013 author (sephiroth74) released completely rewritten version based on code of android 4.2.2 ListView. I must say that it doesn't have all the errors which previous version had and works great!
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

betirsolt
Сообщения: 38
Зарегистрирован: 03 июл 2014, 23:45

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

Сообщение betirsolt » 01 сен 2014, 11:31

У меня MainActivity не видит my_listItem.xml в чем может быть проблема?

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

package com.example.p0421_simplelis;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

	String[] names = { "Иван", "Марья", "Петр", "Антон", "Даша", "Борис",
			"Костя", "Игорь", "Анна", "Денис", "Андрей" };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

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

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

<?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="TextView"
    android:textColor="#00ff00"
    android:textSize="24sp" >

</TextView>
Помогите пожалуйста а то у меня не получается

betirsolt
Сообщения: 38
Зарегистрирован: 03 июл 2014, 23:45

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

Сообщение betirsolt » 01 сен 2014, 11:47

Разобрался, надо было не android.R.layout.my_list_item а R.layout.my_list_item всем спасибо

LazeR
Сообщения: 7
Зарегистрирован: 02 сен 2014, 17:57

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

Сообщение LazeR » 05 сен 2014, 18:01

Ребят где ошибка? По отдельноссти код работает. Я считываю все контакты в тел. книге и хочу кинуть их списком отдельно через прогу. Но не получается

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

package ua.example.eve;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class test extends Activity {
	public TextView outputText;
	List<String> listItems = new ArrayList<String>();
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test);
		outputText = (TextView) findViewById(R.id.textView1);
		listItems=fetchContacts();
		final CharSequence[] names = listItems.toArray(new CharSequence[listItems.size()]);
		 // находим список
	    ListView lvMain = (ListView) findViewById(R.id.lvMain);

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

	    // присваиваем адаптер списку
	    lvMain.setAdapter(adapter);

	  }
		
	

	public List<String> fetchContacts() {

		String phoneNumber = null;
		String email = null;

		Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI;
		String _ID = ContactsContract.Contacts._ID;
		String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
		String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER;

		Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
		String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
		String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;

		Uri EmailCONTENT_URI =  ContactsContract.CommonDataKinds.Email.CONTENT_URI;
		String EmailCONTACT_ID = ContactsContract.CommonDataKinds.Email.CONTACT_ID;
		String DATA = ContactsContract.CommonDataKinds.Email.DATA;

		StringBuffer output = new StringBuffer();

		ContentResolver contentResolver = getContentResolver();

		Cursor cursor = contentResolver.query(CONTENT_URI, null,null, null, null);	

		// Loop for every contact in the phone
		if (cursor.getCount() > 0) {

			while (cursor.moveToNext()) {

				String contact_id = cursor.getString(cursor.getColumnIndex( _ID ));
				String name = cursor.getString(cursor.getColumnIndex( DISPLAY_NAME ));

				int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex( HAS_PHONE_NUMBER )));

				if (hasPhoneNumber > 0) {

					output.append("\n First Name:" + name);

					// Query and loop for every phone number of the contact
					Cursor phoneCursor = contentResolver.query(PhoneCONTENT_URI, null, Phone_CONTACT_ID + " = ?", new String[] { contact_id }, null);

					while (phoneCursor.moveToNext()) {
						phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
						output.append("\n Phone number:" + phoneNumber);

					}

					phoneCursor.close();

					// Query and loop for every email of the contact
					Cursor emailCursor = contentResolver.query(EmailCONTENT_URI,	null, EmailCONTACT_ID+ " = ?", new String[] { contact_id }, null);

					while (emailCursor.moveToNext()) {

						email = emailCursor.getString(emailCursor.getColumnIndex(DATA));

						output.append("\nEmail:" + email);

					}

					emailCursor.close();
				}

				listItems.add(name+"-"+phoneNumber);
			}

			
		}
		return listItems;
	}

}

Persik
Сообщения: 19
Зарегистрирован: 15 май 2014, 08:55

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

Сообщение Persik » 17 сен 2014, 09:35

Добрый день. Мне очень понравилось Ваш урок 42. Я целый месяц искала в нете, но в результате ничего не нашла. Так как я новенькая. Мне нужна Ваш помощь, я сделала расписание автобуса рис.1. Но мне нужен такой же рисунок 2. Как делать? Например, время 10:52, а автобус придет 11:00 сделать синим, а наверху прошедшим время прозрачным цветом как рисунок 2. Помоги мне, пожалуйста!!!

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


public class DayFragment extends ListFragment {
	String time[] = { "06:30","06:40","06:48","06:56","07:04","07:12","07:20","07:28","07:36", "07:44",
			"07:52", "08:00", "08:08", "08:16", "08:22", "08:31", "08:40", "08:50", "09:00", "09:10", "09:20",
			"09:30", "09:40", "09:50", "10:00", "10:10", "10:20", "10:30", "10:40", "10:50", "11:00", "11:10",
			"11:20", "11:30", "11:40", "11:50", "12:00", "12:10", "12:20", "12:30", "12:40", "12:50", "13:00",
			"13:10", "13:20", "13:30", "13:40", "13:50", "14:00", "14:10", "14:20", "14:30", "14:40", "14:50",
			"15:00", "15:10", "15:20", "15:30", "15:40", "15:50", "16:00", "16:10", "16:20", "16:30", "16:40", 
			"16:50", "17:00", "17:08", "17:16",	"17:24", "17:32", "17:40", "17:48", "17:56", "18:04", "18:12",
			"18:20", "18:28", "18:36", "18:44", "18:51", "19:00", "19:10", "19:20", "19:30", "19:39", "19:50", 
			"20:03", "20:16", "20:30", "20:43", "20:56", "21:10", "21:23", "21:36", "21:50", "22:03", "22:16",
			"22:30", "22:43", "22:56", "23:10", "23:23", "23:36"};
    @Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.dayfragment, container, false);
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_activated_1, time);
        setListAdapter(adapter);        
       return view;
    }
 }
Вложения
Untitled-1.jpg
Untitled-1.jpg (43.25 КБ) 11165 просмотров

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

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

Сообщение Mikhail_dev » 17 сен 2014, 10:01

Почитайте про адаптеры (урок 47), особое внимание уделите для baseAdapter. Потом почитайте урок 54 по кастомизации адаптера.
Вам нужен в адаптере метод getView где вы будете смотреть текущее время и в зависимости от времени делать манипуляции с текстом.

Persik
Сообщения: 19
Зарегистрирован: 15 май 2014, 08:55

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

Сообщение Persik » 24 сен 2014, 12:08

Mikhail_dev писал(а):Почитайте про адаптеры (урок 47), особое внимание уделите для baseAdapter. Потом почитайте урок 54 по кастомизации адаптера.
Вам нужен в адаптере метод getView где вы будете смотреть текущее время и в зависимости от времени делать манипуляции с текстом.
Добрый день! Я прочитала урок 47 и 54, сделала кастомизации адаптера . Спасибо за Ваш совет.

У меня есть еще вопросы. Как сделать ближайшие время, синий цветом и прошедшие время сделать прозрачным цветом как на рисунке 2.
Последний раз редактировалось Persik 25 сен 2014, 05:49, всего редактировалось 1 раз.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 24 сен 2014, 13:16

Persik писал(а):
Mikhail_dev писал(а):Вам нужен в адаптере метод getView где вы будете смотреть текущее время и в зависимости от времени делать манипуляции с текстом.
У меня есть еще вопросы. Как сделать ближайшие время, синий цветом и прошедшие время сделать прозрачным цветом как на рисунке 2.
Ответили же вам:
1) Получить текущее время
2) Сравнить текущее время с временем из вашего списка
3) В зависимости от того выполнилось условие или нет поменять цвет текста

Все это можно-нужно сделать в getView адаптера. В каком пункте затруднение?

Ответить