Урок 49. SimpleAdapter. Методы SetViewText и SetViewImage
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Спасибо! Недоглядел, надо быть внимательнее в след. раз
- dmitriy4leex
- Сообщения: 4
- Зарегистрирован: 29 июн 2013, 14:45
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Напишите пожалуйста, в двух словах описание данного метода:
int i = Integer.parseInt(text);
Как я понимаю, берётся String-значение text из v (TextView) и конвертируется в Integer???
Спасибо
int i = Integer.parseInt(text);
Как я понимаю, берётся String-значение text из v (TextView) и конвертируется в Integer???
Спасибо
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Именно так. Просто конвертируется строка в целое число.
Update: нет не так ) Значение не берется из v, параметр text мы передаем сами, это то, что мы хотим вставить в наш ViewText.
Update: нет не так ) Значение не берется из v, параметр text мы передаем сами, это то, что мы хотим вставить в наш ViewText.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
$01ny$hko писал(а):Каким образом в следующей строчкеможно вместо "0 баллов" вставить значение из preferences, сохранённое вот так?Код: Выделить всё
public static final String[] ball = new String[] {"0 баллов", "+2 б.", "+1 б.", "5 б." };
Код: Выделить всё
final String SaveBalance = "balance"
А вот можно!rezak90 писал(а):никак =)
Приятная, маленькая хитрость массивов
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Код: Выделить всё
img = (values[i] > 0) ? positive : negative;
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
это такой хитрый оператор условия, чтоб не писать несколько строчек
http://javascript.ru/cond
т.е. если величина положительная в данной переменной (элемент массива) values то присвоить переменной img значение переменной positive, а иначе записать в нее значение переменной negative
http://javascript.ru/cond
т.е. если величина положительная в данной переменной (элемент массива) values то присвоить переменной img значение переменной positive, а иначе записать в нее значение переменной negative
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
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Учите Java, господа.
Инная, я понимаю, что в JavaScript тоже самое, но людей можешь смутить данным действием =)
Инная, я понимаю, что в JavaScript тоже самое, но людей можешь смутить данным действием =)
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
А в каких файлах проекта я могу посмотреть, как выглядят стандартные изображения? Например, android.R.drawable.arrow_down_float
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
https://android.googlesource.com/platfo ... re/res/resmurray писал(а):А в каких файлах проекта я могу посмотреть, как выглядят стандартные изображения? Например, android.R.drawable.arrow_down_float
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Если в массиве данных values[] в качестве первого значения указать 0, то цвет текста и фон для него получаются синего или красного цвета. Ноль на другой позиции не дает такого эффекта. Избавился от этого явления инициализацией цвета, но почему так происходит не разобрался.
Код: Выделить всё
public void setViewText(TextView v, String text) {
// метод супер-класса, который вставляет текст
super.setViewText(v, text);
// если нужный нам TextView, то разрисовываем
if (v.getId() == R.id.tvValue) {
int i = Integer.parseInt(text);
v.setTextColor(Color.WHITE);
if (i < 0)
v.setTextColor(Color.RED);
else if (i > 0)
v.setTextColor(Color.GREEN);
}
}
@Override
public void setViewImage(ImageView v, int value) {
// метод супер-класса
super.setViewImage(v, value);
// разрисовываем ImageView
v.setBackgroundColor(Color.TRANSPARENT);
if (value == negative)
v.setBackgroundColor(Color.RED);
else if (value == positive)
v.setBackgroundColor(Color.GREEN);
}
- Вложения
-
- shot.PNG (55.53 КБ) 12544 просмотра
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
где в коде массив values фигурирует? не вижу
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
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Я вставил только часть кода с моими исправлениями. Полный код вот:Foenix писал(а):где в коде массив values фигурирует? не вижу
Код: Выделить всё
public class MainActivity extends Activity {
// имена атрибутов для Map
final String ATTRIBUTE_NAME_TEXT = "text";
final String ATTRIBUTE_NAME_VALUE = "value";
final String ATTRIBUTE_NAME_IMAGE = "image";
// картинки для отображения динамики
final int positive = android.R.drawable.arrow_up_float;
final int negative = android.R.drawable.arrow_down_float;
ListView lvSimple;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// массив данных
int[] values = { 8, 4, -3, 2, -5, 0, 3, -6, 1, -1 };
// упаковываем данные в понятную для адаптера структуру
ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>(
values.length);
Map<String, Object> m;
int img = 0;
for (int i = 0; i < values.length; i++) {
m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, "Day " + (i + 1));
m.put(ATTRIBUTE_NAME_VALUE, values[i]);
if (values[i] == 0) img = 0; else
img = (values[i] > 0) ? positive : negative;
m.put(ATTRIBUTE_NAME_IMAGE, img);
data.add(m);
}
// массив имен атрибутов, из которых будут читаться данные
String[] from = { ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_VALUE,
ATTRIBUTE_NAME_IMAGE };
// массив ID View-компонентов, в которые будут вставлять данные
int[] to = { R.id.tvText, R.id.tvValue, R.id.ivImg };
// создаем адаптер
MySimpleAdapter sAdapter = new MySimpleAdapter(this, data,
R.layout.item, from, to);
// определяем список и присваиваем ему адаптер
lvSimple = (ListView) findViewById(R.id.lvSimple);
lvSimple.setAdapter(sAdapter);
}
class MySimpleAdapter extends SimpleAdapter {
public MySimpleAdapter(Context context,
List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
}
@Override
public void setViewText(TextView v, String text) {
// метод супер-класса, который вставляет текст
super.setViewText(v, text);
// если нужный нам TextView, то разрисовываем
if (v.getId() == R.id.tvValue) {
int i = Integer.parseInt(text);
if (i < 0) v.setTextColor(Color.RED); else
if (i > 0) v.setTextColor(Color.GREEN);
}
}
@Override
public void setViewImage(ImageView v, int value) {
// метод супер-класса
super.setViewImage(v, value);
// разрисовываем ImageView
if (value == negative) v.setBackgroundColor(Color.RED); else
if (value == positive) v.setBackgroundColor(Color.GREEN);
}
}
}
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Добрый день!
Подскажите как получить _id cursor в методе setViewText(TextView v, String text)
[syntax=java]
class MySimpleCursorAdapter extends SimpleCursorAdapter {
long cursor_id;
int red = getResources().getColor(R.color.Red);
public MySimpleCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
}
@Override
public void setViewText(TextView v, String text) {
super.setViewText(v, text);
if(v.getId()== R.id.txt_name_culture_item){
// получить _id cursor
}
}
}
[/syntax]
Спасибо
Подскажите как получить _id cursor в методе setViewText(TextView v, String text)
[syntax=java]
class MySimpleCursorAdapter extends SimpleCursorAdapter {
long cursor_id;
int red = getResources().getColor(R.color.Red);
public MySimpleCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
}
@Override
public void setViewText(TextView v, String text) {
super.setViewText(v, text);
if(v.getId()== R.id.txt_name_culture_item){
// получить _id cursor
}
}
}
[/syntax]
Спасибо
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Cursor cursor = (Cursor) getItem(position);
попробуй так
попробуй так
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
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
В layout файле указано:
[syntax=xml]
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:orientation="horizontal">
---- blah-blah ----
</LinearLayout>
</LinearLayout>
[/syntax]
А зачем такое? Зачем внутрь layout класть ещё один layout единственным элементом?
[syntax=xml]
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:orientation="horizontal">
---- blah-blah ----
</LinearLayout>
</LinearLayout>
[/syntax]
А зачем такое? Зачем внутрь layout класть ещё один layout единственным элементом?
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
он не единственный, там же написанно: " ---- blah-blah ---- "ltsolo писал(а):В layout файле указано:
[syntax=xml]
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:orientation="horizontal">
---- blah-blah ----
</LinearLayout>
</LinearLayout>
[/syntax]
А зачем такое? Зачем внутрь layout класть ещё один layout единственным элементом?
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Окей, поприкалывались и будет. А теперь серьёзно, зачем внутри одного layout другой layout единственным элементом?altwin писал(а):он не единственный, там же написанно: " ---- blah-blah ---- "
Во внутренеем layout всё равно, что лежит, это не важно. Но во внешнем только один layout и лежит. Вот и странно это.
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Если это сделали, значит это кому -то нужно. И если вы не встречали задачи в которой это нужно, то это не говорит ни о чем, кроме того, что вы не встречали такой задачи.ltsolo писал(а):Окей, поприкалывались и будет. А теперь серьёзно, зачем внутри одного layout другой layout единственным элементом?altwin писал(а):он не единственный, там же написанно: " ---- blah-blah ---- "
Во внутренеем layout всё равно, что лежит, это не важно. Но во внешнем только один layout и лежит. Вот и странно это.
Как минимум я могу предположить, что это не весь layout там есть / будут динамически добавленны другие элементы, а может автор укажет padding и ему так просто удобно установить отступ от границы экрана, а может в background будут разные картинки и фон приложения динамически будет меняться устанавливая прозрачность, да какая разница, никто не будет делать что то просто так, хотя бы потому, что это занимает время, вообще варриантов может быть очень много, а вот зачем вы задаете такой вопрос я так и не понял, вам просто интересно? это бесполезная информация если вам это не нужно сейчас - всеравно забудете, когда понадобится просто сделаете и все поймете. Лучше почитайте следующий урок
P.S. даже если задача была просто руками вложить один layout в другой - это правильный путь, потому, что тот, кто это сделал уже никогда не забудет, что так бывает...
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Вот и тут так, если кто-то задаёт вопрос, значит это ему нужно.altwin писал(а):Если это сделали, значит это кому -то нужно.
Потому и спрашиваю "зачем?". На вырост, просто рудимент или для этого есть какие-то более веские причины. Не хотелось бы использовать уроки как "делай так" и переходить от урока к уроку. Хотелось бы разобраться во всех тонкостях.altwin писал(а):И если вы не встречали задачи в которой это нужно, то это не говорит ни о чем, кроме того, что вы не встречали такой задачи.
Как минимум я могу предположить, что это не весь layout
В общем, как и следовало ожидать объемлющий 1ayout ни для чего не нужен. Выставив android:paddingTop и android:paddingBottom во внутреннем можно смело убирать внешний, разницы визуально не будет.
Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag
Опять же padding задает отступ содержимого, а margin от наружного элементов. То о чем я вам и говорил, вам это не нужно сейчас и вы искуственную проблему создаете себе потому и не понимаете. Не имеет значение что в данном случае margin визуально дает тот же эффект, я вам по каждому уроку могу по 20 способов показать как добиться того же другим способом. Margin работает принципиально иначе и только в данном конкретном(искуственном) случае ведет себя визуально так же. Как минимум задавая padding я задаю для всех, в том числе отмеченных, как bla, blla, bla, а margin нужно указывать каждому, да и опять же -это не важно, а всеголишь способ выдающий тот же результат в конкретном примере.ltsolo писал(а): В общем, как и следовало ожидать объемлющий 1ayout ни для чего не нужен. Выставив android:paddingTop и android:paddingBottom во внутреннем можно смело убирать внешний, разницы визуально не будет.
Вложение такое даже пустых linearLayout можно оправдать даже глубокой убежденностью автора, что ему это потребуется завтра, в этом нет ошибки, а причину я так же как и вы в данном случае не знаю, но я не автор и знать ее не должен. Ваша задача читая уроки не привязываться к конкретному искуственному примеру, он всеголишь показывает конкретную возможность - вложение элемента и никто не пытался доказать что в данном случае это необходимо, а наоборот понять, как это сделать иначе и что будет если поступить по другому. Автор выполнил свою задачу - вложил элемент а зачем - для того, чтобы его вложить -это была цель наверно.
P.S. если вам интересны цели, когда и что делают, чтобы было "кошерно", вам стоит смотреть совсем другие примеры кода, например эти: https://github.com/android