Урок 41. Используем LayoutInflater для создания списка

Обсуждение уроков
heluvet
Сообщения: 8
Зарегистрирован: 20 дек 2012, 09:48

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение heluvet » 20 дек 2012, 12:57

eternal_ego писал(а):Так ведь item-то у вас каждый раз разный, соответственно переменные каждый раз инициализируются именно потому, что соответствуют новым объектам.
Спасибо! Теперь я разобрался.

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

Re: Урок 41. Используем LayoutInflater для создания списка

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

Всем привет! Подскажите как такое сделать с ListView мне нужен список как например в настройках андроида, чтобы первая строка была одним шрифтом а строчки ниже(комментарий к параметру) другого размера)))

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

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение dens » 09 фев 2013, 18:11

Заюзать в качестве layout ресурса для итемов не android.R.layout.simple_list_item_1, а android.R.layout.simple_list_item_2 (там 2 поля, одно - заголовок, второе - комментарий).


djdance
Сообщения: 48
Зарегистрирован: 04 дек 2012, 15:33

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение djdance » 27 фев 2013, 14:10

C LinearLayout все получается
Если везде (в разметке и в коде) заменить LinearLayout на ScrollView или ListView - вылетает при попытке добавить итем.
Почему?

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

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение dens » 03 мар 2013, 22:44

А в логах что пишет?

djdance
Сообщения: 48
Зарегистрирован: 04 дек 2012, 15:33

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение djdance » 03 мар 2013, 22:47

dens

по какому слову фильтровать? там же простыня валится

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

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение dens » 03 мар 2013, 22:55

Если в Eclipse, то справа от edit'a для ввода всяких слов есть селектор выпадающий, выбери там error, будут только ошибки. Ну и смотря простыню, что есть.

kaftanati
Сообщения: 3
Зарегистрирован: 27 фев 2013, 15:44

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение kaftanati » 27 мар 2013, 08:44

djdance писал(а):C LinearLayout все получается
Если везде (в разметке и в коде) заменить LinearLayout на ScrollView или ListView - вылетает при попытке добавить итем.
Почему?
Я добавил в Activity ScrollView, а в него уже включил ListView, к ктоторому добавляю item'ы. Все работает.

Пытаюсь разобраться как обрабатывать вызов Context View - как узнать id нажатого элемента?

djdance
Сообщения: 48
Зарегистрирован: 04 дек 2012, 15:33

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение djdance » 27 мар 2013, 13:35

по нажатию - листенер.

а если отдельно от события нажатия, то с поиском id все по-разному (вы их динамически генерите?)
например чекбокс ищется простым перебором чайлдов
а вот с текстедитом придется повозиться чуть ли не от корневого элемента.
если надо, найду пример по этому абзацу.

Manson
Сообщения: 1
Зарегистрирован: 17 янв 2013, 18:42

Re: Урок 41. Используем LayoutInflater для создания списка

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

Может в уроке стоит упомянуть, что метод findViewById вызывается у объекта View? Ранее (в предыдущих уроках) вызывался метод класса Activity. Когда делал урок, не копипастил, забыл указать объект item при вызове - долго думал, почему возвращается null :)

Don11
Сообщения: 3
Зарегистрирован: 31 мар 2013, 13:18

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение Don11 » 07 апр 2013, 21:30

У меня отображается только 1-й элемент массива,хотя код аналогичный.Помогите разобраться в чем дело.

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
</LinearLayout>

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

<?xml version="1.0" encoding="utf-8"?>
<TextView
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/testText"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:text="This is test text"
 >
 </TextView>

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

package com.example.linflater;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;

public class LinflaterActivity extends Activity {
	String mass[] = {"1","2","3","4","5","6","7","8","9","10"};
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_linflater);
		
		
		LinearLayout ln = (LinearLayout) findViewById(R.id.LinearLayout1);
		LayoutInflater LI1 = getLayoutInflater();
	
		for(int i=0;i<10;i++){
		
                View view = LI1.inflate(R.layout.test, ln,false);
		TextView tv1 = (TextView) view.findViewById(R.id.testText);
		tv1.setText(mass[i]);
		ln.addView(view);
		
               }
	
	}

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

}
Последний раз редактировалось Don11 07 апр 2013, 21:44, всего редактировалось 1 раз.

djdance
Сообщения: 48
Зарегистрирован: 04 дек 2012, 15:33

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение djdance » 07 апр 2013, 21:34

бегло: опечатка в String mass[] = {"1","2","3","4","5","6",7","8","9","10"};

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

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение damager82 » 10 апр 2013, 14:08

Высоту TextView (который @+id/testText) сделайте wrap_content.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Don11
Сообщения: 3
Зарегистрирован: 31 мар 2013, 13:18

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение Don11 » 13 апр 2013, 15:49

damager82 писал(а):Высоту TextView (который @+id/testText) сделайте wrap_content.
Точно!Спасибо.

Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение Digetix » 19 апр 2013, 13:57

Здравствуйте. Мне нужно сделать экран, на котором, грубо говоря, будет TextVeiw, ниже ещё TextVeiw, а ниже хочу сделать, что-то типа ListView (чтоб был список, количество строк заранее известно, и чтоб строки были разделены линиями). Пробовал делать TextVeiw, TextVeiw и ListView, но ListView показывает только первую строку, без прокрутки, хотя она и не нужна. Так вот прошу совета, как лучше сделать обычный список, но с разделяющими линиями как в ListView ? Нажатия в этом списке не нужны, список нужен только для наглядности информации, для читабельности :)

Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение Digetix » 19 апр 2013, 21:10

Нашёл решение вставить TextView

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

<TextView          
      android:layout_width="fill_parent" 
      android:layout_height="1px" 
      android:background="#DADADA" />

grecd
Сообщения: 19
Зарегистрирован: 08 мар 2013, 14:36

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение grecd » 25 апр 2013, 11:53

rezak90 писал(а):
romanzi писал(а):Как узнать по какому элементу списка кликнули?

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

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
   public void onItemClick(AdapterView parentView, View childView, int position, long id) {  
            //position - позиция в списке
            //id - айди привязанных данных к адаптеру
        } 
      }); 
В этом уроке нет list. к чему прикручивать setOnItemClickListener ?

Аватара пользователя
ristar
Сообщения: 4
Зарегистрирован: 19 апр 2013, 10:41

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение ristar » 25 апр 2013, 17:14

grecd писал(а):
rezak90 писал(а):
romanzi писал(а):Как узнать по какому элементу списка кликнули?

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

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
   public void onItemClick(AdapterView parentView, View childView, int position, long id) {  
            //position - позиция в списке
            //id - айди привязанных данных к адаптеру
        } 
      }); 
В этом уроке нет list. к чему прикручивать setOnItemClickListener ?
Без адаптера и listView это будет напряжненько, да и суть урока, насколько я понимаю - разобраться, как работает LayoutInflater :). Как вариант для этого урока - перед добавлением на каждую сгенерированную вьюшку вешать обработчик setOnClickListener

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

item.setBackgroundColor(colors[i % 2]);
item.setOnClickListener(new OnClickListener(){
       @Override
	public void onClick(View v) {
            TextView tvName = (TextView) v.findViewById(R.id.tvName);
            
            TextView tvPosition = (TextView) v.findViewById(R.id.tvPosition);
            TextView tvSalary = (TextView) v.findViewById(R.id.tvSalary);
            // -- делаем что-нибудь
    }
});
linLayout.addView(item);


phenomenon
Сообщения: 22
Зарегистрирован: 17 апр 2013, 17:59

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение phenomenon » 28 апр 2013, 12:28

Допустим я хочу изменить кому-то зарплату в этом списке, как получить доступ к нужной строке?

TextView tvSalary = (TextView) item.findViewById(R.id.tvSalary);
мне даст тока первую как я понимаю.

Ответить