Урок 49. SimpleAdapter. Методы SetViewText и SetViewImage

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

Урок 49. SimpleAdapter. Методы SetViewText и SetViewImage

Сообщение damager82 » 19 янв 2012, 07:10

В этом уроке:

- используем методы SetViewText и SetViewImage

Click here to read this article!
Последний раз редактировалось damager82 02 май 2017, 23:35, всего редактировалось 4 раза.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

lics
Сообщения: 10
Зарегистрирован: 03 фев 2012, 19:11

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

Сообщение lics » 14 фев 2012, 19:42

А можно это 'android.R.drawable.arrow_down_float' как нибудь указать в xml файле разметки ?

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

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

Сообщение damager82 » 17 фев 2012, 12:47

Можно так:

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

<ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/arrow_up_float" />

Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

NobodyCallMeChicken
Сообщения: 17
Зарегистрирован: 27 фев 2012, 10:53

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

Сообщение NobodyCallMeChicken » 01 мар 2012, 07:54

Добрый день. Помогите пожалуйста разобраться почему приложение падает при запуске. Падает с таким сообщением об ошибке:
"E/AndroidRuntime(1654):java.lang.RuntimeException: Unable to start activity ComponentInfo{com.com/com.com.SimpleAdapterCustomActivity;}: java.lang.ClassCastException: android.widget.LinearLayout"
Код программы и файлы ресурсов такие же как у вас. Последний метод который отрабатывается полностью - это конструктор MySimpleAdapter.

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

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

Сообщение damager82 » 01 мар 2012, 11:40

Ошибка в этой строке?
lvSimple = (ListView) findViewById(R.id.lvSimple);

Значит R.id.lvSimple - это у вас ID компонента LinearLayout
Проверьте layout-файл. Скопируйте еще раз содержимое с урока.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

NobodyCallMeChicken
Сообщения: 17
Зарегистрирован: 27 фев 2012, 10:53

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

Сообщение NobodyCallMeChicken » 01 мар 2012, 12:09

Скопировал, не помогло. Я не знаю где падает, метод onCreate отрабатывает полностью, судя по логам, поэтому ошибка скорее всего не в этих строчка. И точно такая же ошибка в следующем уроке.

Кстати, извините за офтоп, вы планируете написать статью о том как пользоваться отладчиком eclipse при разработке под Андроид?

NobodyCallMeChicken
Сообщения: 17
Зарегистрирован: 27 фев 2012, 10:53

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

Сообщение NobodyCallMeChicken » 01 мар 2012, 20:25

Спасибо, разобрался в чем проблема. Но вопрос с отладчиком остается актуальным:) Без него совсем тяжело работать, а толковой документации я к сожалению не нашел.

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

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

Сообщение damager82 » 05 мар 2012, 09:37

Я сам не особо пользуюсь отладчиком. Больше на логи упираю. Только, если уж совсем непонятно, что не так, тогда пользую.
Но вообще штука, конечно, нужная и полезная. Будет время, попробую сочинить чегонить про отладку.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

dlnsk
Сообщения: 9
Зарегистрирован: 13 авг 2012, 14:16

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

Сообщение dlnsk » 16 авг 2012, 19:55

Обнаружил интересный эффект в данном примере:
После выполнения команды

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

sAdapter.notifyDataSetChanged();
(я поместил ее в onClick добавленой мной кнопки) в строке с нулем цвет нуля и фон картинки рядом становятся красными (точнее они становятся того цвета, который у предыдущего пункта).
Кто-нибудь может объяснить этот эффект?

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

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

Сообщение math64 » 17 авг 2012, 08:03

Какая версия андроида? Посмотрел исходники SimpleAdapter для четвёрки - так и должно происходить, в примере ошибка.
Цвет фона нужно устанавливать всегда. Метод суперкласса с ним ничего не делает, так что он должен остаться от предыдущего пункта.

Vic
Сообщения: 6
Зарегистрирован: 14 ноя 2012, 08:39

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

Сообщение Vic » 29 ноя 2012, 11:03

dlnsk писал(а):Обнаружил интересный эффект в данном примере:
После выполнения команды в строке с нулем цвет нуля и фон картинки рядом становятся красными (точнее они становятся того цвета, который у предыдущего пункта).
Кто-нибудь может объяснить этот эффект?
Тоже самое произошло, когда добавил еще данных в массив чисел:

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

int[] values = { 8, 4, -3, 2, -5, 0, 3, -6, 1, -1, -5, 7, 8, 0, 10 }
Но тут встает вопрос: В уроках на скринах черный фон и белый текст, а у меня наоборот. Как определить, какие значения по умолчанию были у того лейаута, по которому составляем элементы списка?

Попробовал так:

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

public class MainActivity extends Activity {
...
TextView tvValue;
...
protected void onCreate(Bundle savedInstanceState) {
...
    tvValue = (TextView) findViewById(R.id.tvValue);
}

...

public void setViewText(TextView v, String text) {
...
       if (i > 0)
       	  v.setTextColor(Color.GREEN);
       else
       	  v.setTextColor(tvValue.getCurrentTextColor()); // это как раз 103 строка
}

Ругается,
11-29 11:23:01.483: E/AndroidRuntime(606): java.lang.NullPointerException
11-29 11:23:01.483: E/AndroidRuntime(606): MainActivity$MySimpleAdapter.setViewText(MainActivity.java:103)
Он не видит tvValue из MainActivity?

Попробовал так:

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

class MySimpleAdapter extends SimpleAdapter {
    MainActivity _context;
    public MySimpleAdapter(Context context,
       List<? extends Map<String, ?>> data, int resource,
       String[] from, int[] to) {
      super(context, data, resource, from, to);
      _context = (MainActivity)context;
   }

...

      if (i > 0)
         v.setTextColor(Color.GREEN);
      else
         v.setTextColor(_context.tvValue.getCurrentTextColor());

Все равно ругается.

Может он не может определить цвет у того элемента, который не выведен?

Тогда как же найти цвет текста и заднего фона для картинки, которые должны быть по умолчанию?

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

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

Сообщение $01ny$hko » 23 янв 2013, 21:47

Каким образом в следующей строчке

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

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

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

final String SaveBalance = "balance"

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 24 янв 2013, 00:32

static final String
никак =)
R.id.team
Политика на форуме запрещена

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

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

Сообщение neoksi » 24 янв 2013, 04:21

Vic писал(а):...

Все равно ругается.

Может он не может определить цвет у того элемента, который не выведен?

Тогда как же найти цвет текста и заднего фона для картинки, которые должны быть по умолчанию?
Правильно ругается, так как у тебя ссылки на нужный класс нету...

Вообще, по уму, тебе необходимо нужные параметры передать в конструктор своего адаптера, а потом с ними уже манипулировать внутри класса твоего адаптера. Для понимания советую прокачать навык понимания ООП. ;)

Roman
Сообщения: 22
Зарегистрирован: 23 авг 2012, 08:43

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

Сообщение Roman » 24 фев 2013, 11:34

Добрый день.
Подскажите пожалуйста как при выводе данных из базы умножить их на число?
Сделал простенькую базу данных и хочу при выводе в ListView (кстати нашел как можно кастомизировать элементы) хочу умножить столбец sets_weight на коэффициент.

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

onSets = db.getSets(exesIdsColExes, toprog_dif);    
    listSets.setAdapter(new SimpleCursorAdapter(this, 
            R.layout.itemsets, onSets, 
            new String[] {"sets_ids", "sets_weight", "sets_ones"},  
            new int[] {R.id.itemsets_ids, R.id.itemsets_weight, R.id.itemsets_ones}) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                View row = super.getView(position, convertView, parent);
                // Here we get the textview and set the color
                Typeface fontTitleProg = Typeface.createFromAsset(getAssets(), "AGHELVETICA.TTF");
                TextView itemsets_ids = (TextView) row.findViewById(R.id.itemsets_ids);
                itemsets_ids.setTypeface(fontTitleProg, 1);
                itemsets_ids.setGravity(0x05);

                TextView itemsets_weight = (TextView) row.findViewById(R.id.itemsets_weight);
                itemsets_weight.setTypeface(fontTitleProg, 1);
                itemsets_weight.setGravity(0x01);

                TextView itemsets_ones = (TextView) row.findViewById(R.id.itemsets_ones);
                itemsets_ones.setTypeface(fontTitleProg, 1);
                itemsets_ones.setGravity(0x01);   

                return row;
        }
    });

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

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

Сообщение dens » 24 фев 2013, 15:14

Переопределить ViewBinder под свои нужды (смотри следующий урок).

И, кстати, зачем извращаешься так и задаёшь тот же graviry через числа (0x01 всякие)? Есть же определённые ещё разработчиками оси константы, их бы и использовал.

Alex_sh
Сообщения: 9
Зарегистрирован: 04 фев 2013, 12:10

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

Сообщение Alex_sh » 28 фев 2013, 23:42

Попытался изменить тип данных в данном примере на double
из
// массив данных
int[] values = { 8, 4, -3, 2, -5, 0, 3, -6, 1, -1 };
сделал
// массив данных
double[] values = { 8, 4, -3, 2, -5, 0, 3, -6, 1, -1 };

возникает следующая ошибка:
02-28 23:27:16.278: E/AndroidRuntime(500): java.lang.NumberFormatException: unable to parse '8.0' as integer

Не понимаю почему происходит parse, может кто-нибудь объяснить?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 01 мар 2013, 00:08

потому что

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

int i = Integer.parseInt(text);
R.id.team
Политика на форуме запрещена

Alex_sh
Сообщения: 9
Зарегистрирован: 04 фев 2013, 12:10

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

Сообщение Alex_sh » 01 мар 2013, 10:42

А можешь рассказать подробнее, где я могу это посмотреть?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 01 мар 2013, 10:46

это с урока строка
R.id.team
Политика на форуме запрещена

Ответить