Урок 41. Используем LayoutInflater для создания списка
Re: Урок 41. Используем LayoutInflater для создания списка
присоединиюсь к предыдущему вопросу.
в item-ах лежат RadioButton, 4 штуки.
по какому из 4х кликнули определяется легко, а как выяснить контейнер (item) в котором это все лежит?
как создаю :
[syntax=java]
for (int i = 0; i < ImageResMatrix.length; i++)
{
View item = ltInflater.inflate(R.layout.test_item, linLayout, false);
ImageView image = (ImageView) item.findViewById(R.id.image_question);
image.setImageResource(ImageResMatrix);
ItemId = item.getId();
linLayout.addView(item);
}
[/syntax]
обрабатываю :
[syntax=java]
public void OnTestItemRBClick (View v)
{
RadioButton rb = (RadioButton)findViewById(v.getId());
rb.setBackgroundColor(Color.GREEN); //какое-то действие для примера
}[/syntax]
на какой-бы RadioButton я не жал, цвет (в данном случае) меняет только фон RadioButton-а на самом первом item-е
как быть?
в item-ах лежат RadioButton, 4 штуки.
по какому из 4х кликнули определяется легко, а как выяснить контейнер (item) в котором это все лежит?
как создаю :
[syntax=java]
for (int i = 0; i < ImageResMatrix.length; i++)
{
View item = ltInflater.inflate(R.layout.test_item, linLayout, false);
ImageView image = (ImageView) item.findViewById(R.id.image_question);
image.setImageResource(ImageResMatrix);
ItemId = item.getId();
linLayout.addView(item);
}
[/syntax]
обрабатываю :
[syntax=java]
public void OnTestItemRBClick (View v)
{
RadioButton rb = (RadioButton)findViewById(v.getId());
rb.setBackgroundColor(Color.GREEN); //какое-то действие для примера
}[/syntax]
на какой-бы RadioButton я не жал, цвет (в данном случае) меняет только фон RadioButton-а на самом первом item-е
как быть?
Re: Урок 41. Используем LayoutInflater для создания списка
Код: Выделить всё
package com.example.list;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
String[] name = { "Иван", "Марья", "Петр", "Антон", "Даша", "Борис",
"Костя", "Игорь" };
String[] position = { "Программер", "Бухгалтер", "Программер",
"Программер", "Бухгалтер", "Директор", "Программер", "Охранник" };
int salary[] = { 13000, 10000, 13000, 13000, 10000, 15000, 13000, 8000 };
int[] colors = new int[2];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*LinearLayout linLayout = (LinearLayout) findViewById(R.id.linLayout);
LayoutInflater ltInflater = getLayoutInflater();
View item = ltInflater.inflate(R.layout.item, linLayout, false);
TextView tvName = (TextView) item.findViewById(R.id.tvName);
tvName.setText("Me");
TextView tvPosition = (TextView) item.findViewById(R.id.tvPosition);
tvPosition.setText("Должность: ");
TextView tvSalary = (TextView) item.findViewById(R.id.tvSalary);
tvSalary.setText("Оклад: " + String.valueOf("salary"));
item.getLayoutParams().width = LayoutParams.MATCH_PARENT;
item.setOnClickListener(this);
linLayout.addView(item);
View item2 = ltInflater.inflate(R.layout.item, linLayout, false);
TextView tvName2 = (TextView) item2.findViewById(R.id.tvName);
tvName2.setText("Me2");
TextView tvPosition2 = (TextView) item2.findViewById(R.id.tvPosition);
tvPosition2.setText("Должность2: ");
TextView tvSalary2 = (TextView) item2.findViewById(R.id.tvSalary);
tvSalary2.setText("Оклад2: " + String.valueOf("salary"));
item2.getLayoutParams().width = LayoutParams.MATCH_PARENT;
item2.setOnClickListener(this);
linLayout.addView(item2);*/
colors[0] = Color.parseColor("#559966CC");
colors[1] = Color.parseColor("#55336699");
LinearLayout linLayout = (LinearLayout) findViewById(R.id.linLayout);
LayoutInflater ltInflater = getLayoutInflater();
for (int i = 0; i < name.length; i++) {
Log.d("myLogs", "i = " + i);
View item = ltInflater.inflate(R.layout.item, linLayout, false);
TextView tvName = (TextView) item.findViewById(R.id.tvName);
tvName.setText(name[i]);
OnClickListener oclBtnOk = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case (R.id.tvName):{
Toast.makeText(getApplicationContext(), "Click on item", 100).show();
TextView tvName = (TextView) v.findViewById(R.id.tvName);
Log.d("My", "tvNAme"+tvName.getText());
break;
}
case (R.id.tvPosition):{
Toast.makeText(getApplicationContext(), "Click on item", 100).show();
Log.d("My", "tvPosition");
break;
}
case (R.id.tvSalary):{
Toast.makeText(getApplicationContext(), "Click on item", 100).show();
Log.d("My", "tvSalary");
break;
}
case (R.id.vImage):{
Toast.makeText(getApplicationContext(), "Click on item", 100).show();
Log.d("My", "vImage");
break;
}
}
}
};
TextView tvPosition = (TextView) item.findViewById(R.id.tvPosition);
tvPosition.setText("Должность: " + position[i]);
TextView tvSalary = (TextView) item.findViewById(R.id.tvSalary);
tvSalary.setText("Оклад: " + String.valueOf(salary[i]));
View vImage = (View) item.findViewById(R.id.vImage);
item.getLayoutParams().width = LayoutParams.MATCH_PARENT;
//item.setBackgroundColor(colors[i % 2]);
item.setOnClickListener(this);
item.setClickable(true);
vImage.setOnClickListener(oclBtnOk);
/* tvName.setOnClickListener(oclBtnOk) ;
tvPosition.setOnClickListener(oclBtnOk) ;
tvSalary.setOnClickListener(oclBtnOk) ;
vImage.setOnClickListener(oclBtnOk);*/
linLayout.addView(item);
}
linLayout.setOnClickListener(this);
}
@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 void onClick(View v) {
// TODO Auto-generated method stub
TextView tvName = (TextView) v.findViewById(R.id.tvName);
tvName.getText();
Toast.makeText(getApplicationContext(), "Click on "+tvName.getText(), 100).show();
v.setBackgroundColor(Color.parseColor("#559966CC"));
Log.d("My", "item"+" "+ tvName.getText());
}
}
Re: Урок 41. Используем LayoutInflater для создания списка
ам, заметил одну вещь: между каждым добавленным View в список есть падинг, тоесть они не плотно прилегают друг к другу, но в xml не указан же падинг, почему он есть и как его можно убрать?
Re: Урок 41. Используем LayoutInflater для создания списка
У меня нету Энигмы, так что может по подробней скажешь и покажешь о каком падинге идёт речь?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 41. Используем LayoutInflater для создания списка
http://startandroid.ru/ru/uroki/vse-uro ... piska.html <-писька лол
прогартай урок вниз, на последний скрин, там каждый добавленный View не плотно прилегает к следующему и предыдущему, тоесть есть отступ, как падинг. вот как избавиться от этого отступа или почему он появился то)
прогартай урок вниз, на последний скрин, там каждый добавленный View не плотно прилегает к следующему и предыдущему, тоесть есть отступ, как падинг. вот как избавиться от этого отступа или почему он появился то)
Re: Урок 41. Используем LayoutInflater для создания списка
там же стоит android:layout_marginTop="10dp"
от сюдава и отступ
от сюдава и отступ
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 41. Используем LayoutInflater для создания списка
странно, я смотрел, то не увидел, ща пересмотрю ещё разок, пропустил наверно, спасибо)
кста, ты не знаешь, как получить номер элемента списка, нажатием на него. какой обработчик повесить на layoutInflater?
upd
внезапно оказалось, что не вешаются обработчики на layoutInflater эт грустно...
кста, ты не знаешь, как получить номер элемента списка, нажатием на него. какой обработчик повесить на layoutInflater?
upd
внезапно оказалось, что не вешаются обработчики на layoutInflater эт грустно...
Re: Урок 41. Используем LayoutInflater для создания списка
просто суть такова, есть Layout в нём 3 view. каждый должен был обработан.
вот элемент списка- эти 3 View
единственное, что я вижу- обработка нажатия каждого View до того, как он будет засунут в элемент списка, но как-то не красиво.
может есть способ проще?
вот элемент списка- эти 3 View
единственное, что я вижу- обработка нажатия каждого View до того, как он будет засунут в элемент списка, но как-то не красиво.
может есть способ проще?
Re: Урок 41. Используем LayoutInflater для создания списка
делай ListView и получится обработка нажатия будет одна для всех
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 41. Используем LayoutInflater для создания списка
ну это понятно, но я хочу побаловаться именно с этой мутью)
Re: Урок 41. Используем LayoutInflater для создания списка
это муть велосипед, зачем изобретать его если уже всё есть?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 41. Используем LayoutInflater для создания списка
ну ты рассматриваешь ситуацию с слишком серьёзной точки зрения))
Re: Урок 41. Используем LayoutInflater для создания списка
ну тогда вешай на каждый View обработчик
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 41. Используем LayoutInflater для создания списка
Banhammer писал(а):просто суть такова, есть Layout в нём 3 view. каждый должен был обработан.
вот элемент списка- эти 3 View
единственное, что я вижу- обработка нажатия каждого View до того, как он будет засунут в элемент списка, но как-то не красиво.
может есть способ проще?
В обсуждении урока 40 viewtopic.php?t=93 пост 4 есть то что ты хочешь.
У меня тест получился (как там написано)
-
- Сообщения: 77
- Зарегистрирован: 21 июл 2013, 17:33
Re: Урок 41. Используем LayoutInflater для создания списка
Здравствуйте! у меня возник вопрос)
Я хочу вывести из базы данных заметки, но когда запускаю проэкт, они не появляются, а когда присваиваю данное действие кнопке, то все отлично работает, может проблема в создаваемом классе? Заранее спасибо за совет!
Я хочу вывести из базы данных заметки, но когда запускаю проэкт, они не появляются, а когда присваиваю данное действие кнопке, то все отлично работает, может проблема в создаваемом классе? Заранее спасибо за совет!
Код: Выделить всё
public void startList(){
Cursor cursor = sqdb.query(NoteDataBase.TABLE_NAME, new String[] {NoteDataBase.NOTE},null,null,null,null,null);
while(cursor.moveToNext()){
LinearLayout lLayout = (LinearLayout)findViewById(R.id.lLayout);
LayoutInflater lInflater = getLayoutInflater();
String note = cursor.getString(cursor.getColumnIndex(NoteDataBase.NOTE));
View item = lInflater.inflate(R.layout.item, lLayout, false);
TextView tvNote = (TextView)item.findViewById(R.id.tvNote);
tvNote.setText(note);
item.getLayoutParams().width = LayoutParams.MATCH_PARENT;
lLayout.addView(item);
}
cursor.close();
}
Последний раз редактировалось Максим Янчий 21 июл 2013, 19:00, всего редактировалось 1 раз.
Re: Урок 41. Используем LayoutInflater для создания списка
отформатируй код в редакторе
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 19
- Зарегистрирован: 30 июл 2013, 21:10
Re: Урок 41. Используем LayoutInflater для создания списка
Всем привет!
Скопировал 41й урок один-в-один.
Запустил.
В MainActivity ругается на linLayout, tvName, tvPosition и tvSalary
Пишет
linLayout cannot be resolved or is not a field
и т.д. по остальным вышеупомянутым.
Как от этого избавиться?
Скопировал 41й урок один-в-один.
Запустил.
В MainActivity ругается на linLayout, tvName, tvPosition и tvSalary
Пишет
linLayout cannot be resolved or is not a field
и т.д. по остальным вышеупомянутым.
Как от этого избавиться?
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 41. Используем LayoutInflater для создания списка
В импорте убрать import android.R
-
- Сообщения: 19
- Зарегистрирован: 30 июл 2013, 21:10
Re: Урок 41. Используем LayoutInflater для создания списка
У меня нет в импорте android.Rno-- писал(а):В импорте убрать import android.R
Я взял текст из урока буква в букву
=========================================
Всё заработало, вопрос закрыт.
Причина неизвестна.
Вернее, возможно, известна. Но тогда не понятна.
В ErrorLog-e выскакивали сообщения:
Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level
Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory.
The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in
this system level configuration. The Git installation location can be configured on the
Team > Git > Configuration preference page's 'System Settings' tab.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.
Warning: The environment variable HOME is not set. The following directory will be used to store the Git
user global configuration and to define the default location to store repositories: 'C:\Documents and Settings\Administrator'. If this is
not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and
EGit might behave differently since they see different configuration options.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.
Если гуру разберутся и объяснят, в чем дело, - будем благодарны.
Но сообщения не пропали, продолжают выпадать.
Re: Урок 41. Используем LayoutInflater для создания списка
Вопрос по item.setBackgroundColor(colors[i % 2]);.
[i % 2]-
понятно как это работает здесь, но непонятно, что это. Будьте добры, "%" - это из какого раздела java?
[i % 2]-
понятно как это работает здесь, но непонятно, что это. Будьте добры, "%" - это из какого раздела java?