Страница 2 из 3

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 01 мар 2013, 11:04
Alex_sh
Спасибо! Недоглядел, надо быть внимательнее в след. раз

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 29 июн 2013, 14:51
dmitriy4leex
Напишите пожалуйста, в двух словах описание данного метода:

int i = Integer.parseInt(text);

Как я понимаю, берётся String-значение text из v (TextView) и конвертируется в Integer???

Спасибо

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 29 июн 2013, 15:06
xr0m
Именно так. Просто конвертируется строка в целое число.

Update: нет не так ) Значение не берется из v, параметр text мы передаем сами, это то, что мы хотим вставить в наш ViewText.

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 05 июл 2013, 12:04
Mikhail_dev
$01ny$hko писал(а):Каким образом в следующей строчке

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

public static final String[] ball = new String[] {"0 баллов", "+2 б.", "+1 б.", "5 б." };
можно вместо "0 баллов" вставить значение из preferences, сохранённое вот так?

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

final String SaveBalance = "balance"
rezak90 писал(а):никак =)
А вот можно!
Приятная, маленькая хитрость массивов

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 05 авг 2013, 23:07
ensto

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

img = (values[i] > 0) ? positive : negative;
Объясните доступно код в этой строчке. Спасибо.

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 06 авг 2013, 00:09
Foenix
это такой хитрый оператор условия, чтоб не писать несколько строчек
http://javascript.ru/cond
т.е. если величина положительная в данной переменной (элемент массива) values то присвоить переменной img значение переменной positive, а иначе записать в нее значение переменной negative

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 06 авг 2013, 00:13
Mikhail_dev
Учите Java, господа.
Инная, я понимаю, что в JavaScript тоже самое, но людей можешь смутить данным действием =)

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 25 авг 2013, 15:42
murray
А в каких файлах проекта я могу посмотреть, как выглядят стандартные изображения? Например, android.R.drawable.arrow_down_float

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 25 авг 2013, 16:20
rezak90
murray писал(а):А в каких файлах проекта я могу посмотреть, как выглядят стандартные изображения? Например, android.R.drawable.arrow_down_float
https://android.googlesource.com/platfo ... re/res/res

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 01 ноя 2013, 16:07
denis_po3
Если в массиве данных 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);
		}

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 02 ноя 2013, 23:18
Foenix
где в коде массив values фигурирует? не вижу

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 04 ноя 2013, 10:28
denis_po3
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

Добавлено: 05 дек 2013, 16:28
snowkam
Добрый день!
Подскажите как получить _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

Добавлено: 05 дек 2013, 17:26
Foenix
Cursor cursor = (Cursor) getItem(position);
попробуй так

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 05 фев 2014, 11:54
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 единственным элементом? :shock:

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 05 фев 2014, 12:10
altwin
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 единственным элементом? :shock:
он не единственный, там же написанно: " ---- blah-blah ---- " :)

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 05 фев 2014, 12:15
ltsolo
altwin писал(а):он не единственный, там же написанно: " ---- blah-blah ---- " :)
Окей, поприкалывались и будет. А теперь серьёзно, зачем внутри одного layout другой layout единственным элементом?

Во внутренеем layout всё равно, что лежит, это не важно. Но во внешнем только один layout и лежит. Вот и странно это.

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 05 фев 2014, 12:47
altwin
ltsolo писал(а):
altwin писал(а):он не единственный, там же написанно: " ---- blah-blah ---- " :)
Окей, поприкалывались и будет. А теперь серьёзно, зачем внутри одного layout другой layout единственным элементом?

Во внутренеем layout всё равно, что лежит, это не важно. Но во внешнем только один layout и лежит. Вот и странно это.
Если это сделали, значит это кому -то нужно. И если вы не встречали задачи в которой это нужно, то это не говорит ни о чем, кроме того, что вы не встречали такой задачи.
Как минимум я могу предположить, что это не весь layout там есть / будут динамически добавленны другие элементы, а может автор укажет padding и ему так просто удобно установить отступ от границы экрана, а может в background будут разные картинки и фон приложения динамически будет меняться устанавливая прозрачность, да какая разница, никто не будет делать что то просто так, хотя бы потому, что это занимает время, вообще варриантов может быть очень много, а вот зачем вы задаете такой вопрос я так и не понял, вам просто интересно? это бесполезная информация если вам это не нужно сейчас - всеравно забудете, когда понадобится просто сделаете и все поймете. Лучше почитайте следующий урок ;)

P.S. даже если задача была просто руками вложить один layout в другой - это правильный путь, потому, что тот, кто это сделал уже никогда не забудет, что так бывает...

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 05 фев 2014, 13:36
ltsolo
altwin писал(а):Если это сделали, значит это кому -то нужно.
Вот и тут так, если кто-то задаёт вопрос, значит это ему нужно.
altwin писал(а):И если вы не встречали задачи в которой это нужно, то это не говорит ни о чем, кроме того, что вы не встречали такой задачи.
Как минимум я могу предположить, что это не весь layout
Потому и спрашиваю "зачем?". На вырост, просто рудимент или для этого есть какие-то более веские причины. Не хотелось бы использовать уроки как "делай так" и переходить от урока к уроку. Хотелось бы разобраться во всех тонкостях.

В общем, как и следовало ожидать объемлющий 1ayout ни для чего не нужен. Выставив android:paddingTop и android:paddingBottom во внутреннем можно смело убирать внешний, разницы визуально не будет.

Re: Урок 49. SimpleAdapter. Методы SetViewText и SetViewImag

Добавлено: 05 фев 2014, 13:54
altwin
ltsolo писал(а): В общем, как и следовало ожидать объемлющий 1ayout ни для чего не нужен. Выставив android:paddingTop и android:paddingBottom во внутреннем можно смело убирать внешний, разницы визуально не будет.
Опять же padding задает отступ содержимого, а margin от наружного элементов. То о чем я вам и говорил, вам это не нужно сейчас и вы искуственную проблему создаете себе потому и не понимаете. Не имеет значение что в данном случае margin визуально дает тот же эффект, я вам по каждому уроку могу по 20 способов показать как добиться того же другим способом. Margin работает принципиально иначе и только в данном конкретном(искуственном) случае ведет себя визуально так же. Как минимум задавая padding я задаю для всех, в том числе отмеченных, как bla, blla, bla, а margin нужно указывать каждому, да и опять же -это не важно, а всеголишь способ выдающий тот же результат в конкретном примере.
Вложение такое даже пустых linearLayout можно оправдать даже глубокой убежденностью автора, что ему это потребуется завтра, в этом нет ошибки, а причину я так же как и вы в данном случае не знаю, но я не автор и знать ее не должен. Ваша задача читая уроки не привязываться к конкретному искуственному примеру, он всеголишь показывает конкретную возможность - вложение элемента и никто не пытался доказать что в данном случае это необходимо, а наоборот понять, как это сделать иначе и что будет если поступить по другому. Автор выполнил свою задачу - вложил элемент а зачем - для того, чтобы его вложить -это была цель наверно.

P.S. если вам интересны цели, когда и что делают, чтобы было "кошерно", вам стоит смотреть совсем другие примеры кода, например эти: https://github.com/android