Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 16 дек 2018, 22:46

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 86 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 13 июн 2013, 11:05 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
что вытягивать то нужно? у вас же есть данные:
Код: [ Загрузить ] [ Скрыть ]
  1. ArrayList<Map<String, Object>> data 

от сюдава и вытягивайте

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 13 июн 2013, 15:00 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
Ivan_P писал(а):
Прошу прощения, что неправильно выразился про ListView.
строю список так:
void populate() {
ArrayList<Map<String, Object>> data = getData();
String[] from = { KEY_VALUE, KEY_VALUE2, KEY_VALUE3 };
int[] to = { R.id.value,R.id.value1, R.id.value2 };

SimpleAdapter sa = new SimpleAdapter(this, data, R.layout.item_view,from, to);

setListAdapter(sa);

Но как всё таки вытянуть?

При нажатии на пункт списка тебе нужно сделать одну только вещь (ищи в уроке!) - определить id записи в ArrayList-е, по которой нажал пользователь.
А затем уже бросить думать про ListView и из ArrayList-а доставать KEY_VALUE, KEY_VALUE2, KEY_VALUE3 в которых, судя по всему и находятся твои ФИО.

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 13 июн 2013, 23:26 

Зарегистрирован: 06 май 2013, 22:13
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Foenix писал(а):
Ivan_P писал(а):
Прошу прощения, что неправильно выразился про ListView.
строю список так:
void populate() {
ArrayList<Map<String, Object>> data = getData();
String[] from = { KEY_VALUE, KEY_VALUE2, KEY_VALUE3 };
int[] to = { R.id.value,R.id.value1, R.id.value2 };

SimpleAdapter sa = new SimpleAdapter(this, data, R.layout.item_view,from, to);

setListAdapter(sa);

Но как всё таки вытянуть?

При нажатии на пункт списка тебе нужно сделать одну только вещь (ищи в уроке!) - определить id записи в ArrayList-е, по которой нажал пользователь.
А затем уже бросить думать про ListView и из ArrayList-а доставать KEY_VALUE, KEY_VALUE2, KEY_VALUE3 в которых, судя по всему и находятся твои ФИО.





ID записи у меня определен. Как дальше вытянуть? Извините за настойчивость...Столько уже всего перепробовал


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 14 июн 2013, 07:37 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
Ivan_P писал(а):
.Столько уже всего перепробовал

не очень видимо много. Внимательно читай уроки дальше, там есть поиск по map

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 13 авг 2013, 16:47 

Зарегистрирован: 13 авг 2013, 16:39
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Сначала приведу код:
Код: [ Загрузить ] [ Скрыть ]
  1. Map<String, Object> m = new HashMap<String, Object>(); 
  2. m.put("text", TaskElement.getTextContent()); 
  3. switch(typetask) {                             
  4.   case 1: m.put("background", R.color.PracticeTileBackgroundBrush); break; 
  5.   case 2: m.put("background", R.color.TheoryTileBackgroundBrush); break; 
  6.   case 3: m.put("background", R.color.ComboTileBackgroundBrush); break; 
  7.   default: break;                             
  8. }     
  9. data.add(m); 

Тут собственно задаются значения атрибутов.
Далее создаём адаптер:
Код: [ Загрузить ] [ Скрыть ]
  1. String[] from = { "text", "background"}; 
  2. int[] to = { R.id.LessTitle, R.id.TileLayout}; 
  3. SimpleAdapter sAdapter = new SimpleAdapter(this, data, R.layout.smalllesstile, from, to);   
  4. TasksGrid.setAdapter(sAdapter); 


Ну и xml-ка адаптерная:
Код: [ Загрузить ] [ Скрыть ]
  1. <?xml version="1.0" encoding="utf-8"?> 
  2.   <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.         android:id="@+id/TileLayout" 
  4.         android:layout_width="150dp" 
  5.         android:layout_height="150dp" 
  6.         android:columnCount="1" 
  7.         android:rowCount="2" 
  8.         android:layout_margin="5dp" 
  9.         android:background="@color/ComboTileBackgroundBrush"> 
  10.         <TextView 
  11.             android:id="@+id/LessTitle"     
  12.             android:layout_column="0" 
  13.             android:layout_row="0"                 
  14.             android:layout_width="150dp" 
  15.             android:layout_height="100dp" 
  16.             android:gravity="left" 
  17.             android:textColor="@color/FontColor" 
  18.             android:textSize="18sp" 
  19.             /> 
  20.         <TextView 
  21.             android:id="@+id/LessNumber"     
  22.             android:layout_column="0" 
  23.             android:layout_row="1"                 
  24.             android:layout_width="150dp" 
  25.             android:layout_height="50dp" 
  26.             android:gravity="right" 
  27.             android:textColor="@color/FontColor" 
  28.             android:textSize="20sp"     /> 
  29.     </GridLayout> 


Теперь о проблеме. Пока пытаюсь устанавливать только текстовые значения (LessTitle) - всё окей работает. Но как только добавляю фичу со сменой фона - сразу крашится. Switch работает исправно, даже адаптер после цикла создаёт исправно. Но вот применять его к GridView (TaskGrid который) прога усиленно отказывается. Как быть?

P.S. значения background берётся из файла color.xml (и должно оттуда браться, т.е. напрямую в коде цвет ставить нельзя)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 24 фев 2014, 20:47 

Зарегистрирован: 08 фев 2014, 18:15
Сообщений: 134
Благодарил (а): 53 раз.
Поблагодарили: 7 раз.
А можно одному ListView присвоить 2 адаптера? У меня что то не получается..
И если нет, то посоветуйте выход. Я вывожу в ListView данные из БД через SimpleCursorAdapter( Имя и дата). И мне нужно пронумеровать элементы ListView. Сделал в layout еще один TextView и попытался засунуть туда номера(1,2,3,4....) из списка ArrayList через SimpleAdapter - не получилось. А других идей что то нет=))


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 11 июл 2014, 11:37 

Зарегистрирован: 13 сен 2013, 19:12
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Отличный урок! Очень мне помог. Только возникла одна проблема, которую никак не удаётся решить. Мне нужно сделать, чтобы при прикосновении к пункту listView он подсвечивался, то есть менялся фон, картинка и цвет текста. Фон и цвет текста я меняю селекторами. А вот с картинками проблема, потому что в каждом пункте разная картинка. Пробовал добавить метод OnTuch, но что-то не вышло. Как правильно сделать?
Вот активити:

public class MainActivity extends Activity {

Context context;
int layoutResourceId;
CharSequence data1[] = null;
Typeface tf;

Intent intent;
ListView lvSimple;
SimpleAdapter sAdapter;
ArrayList<Map<String, Object>> data;
Map<String, Object> m;
protected static final String LOG_TAG = null;
// имена атрибутов для Map
final String ATTRIBUTE_NAME_TEXT = "text";
final String ATTRIBUTE_NAME_IMAGE = "image";
final String ATTRIBUTE_itemDescription_TEXT = "text_itemDescription";

// массив для загрузки данных с файла string.xml
String[] exerciseNames, descriptionExersises;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// получаем ресурсы с файла string.xml
Resources res = getResources();
exerciseNames = res.getStringArray(R.array.exerciseNames);
descriptionExersises = res.getStringArray(R.array.descriptionExersises);

// упаковываем данные в понятную для адаптера структуру
data = new ArrayList<Map<String, Object>>();
information();

// массив имен атрибутов, из которых будут читаться данные

String[] from = { ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_IMAGE,ATTRIBUTE_itemDescription_TEXT};
// массив ID View-компонентов, в которые будут вставлять данные
int[] to = { R.id.name, R.id.photo,R.id.itemDescription};

// создаем адаптер
sAdapter = new SimpleAdapter(this, data, R.layout.item_list_view_xml, from, to);

// определяем список и присваиваем ему адаптер
lvSimple = (ListView) findViewById(R.id.listV_main);
lvSimple.setAdapter(sAdapter);
lvSimple.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
ImageView imageView = (ImageView) findViewById(R.id.photo);
switch(position){
case 0: intent = new Intent().setClass(this, SecondActivity.class);
startActivity(intent); break;
case 1: break;
case 2: break;
case 3: break;
case 4: break;
case 5: break;
case 6: break;
case 7: break;
case 8: break;

}

data.clear();
information();
sAdapter.notifyDataSetChanged();
Log.d(LOG_TAG, "itemClick: position = " + position + ", id = "+ id);
}
});
}

void information() {

// TODO Auto-generated method stub
m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, exerciseNames[0]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.icon21);
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[0] );
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[0] );
data.add(m);

m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, exerciseNames[1]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.icon22);
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[1] );
data.add(m);

m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, exerciseNames[2]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.icon23);
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[2]);
data.add(m);

m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, exerciseNames[3]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.icon24);
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[3]);
data.add(m);

m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, exerciseNames[4]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.icon25);
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[4]);
data.add(m);

m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, exerciseNames[5]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.icon26);
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[5]);
data.add(m);

m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, exerciseNames[6]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.icon27);
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[6]);

data.add(m);

m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, exerciseNames[7]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.icon28);
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[7]);
data.add(m);

m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_TEXT, exerciseNames[8]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.icon29);
m.put(ATTRIBUTE_itemDescription_TEXT, descriptionExersises[8]);
data.add(m);

}

@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;
}

}


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 21 окт 2014, 22:12 

Зарегистрирован: 30 июл 2014, 21:43
Сообщений: 47
Благодарил (а): 26 раз.
Поблагодарили: 0 раз.
Господа! Такой вопрос.
Использовала SimpleAdapter. Тестировала работу списка на двух разных телефонах. Один телефон при скролинге делает список чисто белым и только при окончании скролинга возвращает списку нормальный внешний вид. К тому же он подсвечивает белым переходом верх и низ списка. Со вторым телефоном таких проблем нет, список выглядит как и должен, и его границы не подсвечивает. Первый HTC (android 2.3.5), второй Alcatel (android 4.1.1).
В чём тут дело?
Спасибо.

_________________
Спасибо за уроки!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 10 ноя 2014, 22:40 

Зарегистрирован: 28 окт 2014, 14:43
Сообщений: 11
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Всем привет! Подскажите пожалуйста в чем моя ошибка.
Взяв за основу данный урок получил вот такой код:

Код: [ Загрузить ] [ Скрыть ]
  1. public class RestListAdapter extends ActionBarActivity { 
  2.  
  3.     String[] name = new String[]{"Первый", "Второй", "Третий"}; 
  4.     String[] address = new String[]{"ул. Имени Улицы 1", "ул. Имени Улицы 2", "ул. Имени Имени"}; 
  5.     String[] phone = new String[]{"0569", "05692", "056"}; 
  6.    
  7.     ListView lvSimple; 
  8.     SimpleAdapter sAdapter; 
  9.  
  10.     final String LOG_TAG = "myLogs"; 
  11.  
  12.     // имена атрибутов для Map 
  13.     final String ATTRIBUTE_NAME_NAME = "text"; 
  14.     final String ATTRIBUTE_NAME_ADDRESS = "text"; 
  15.     final String ATTRIBUTE_NAME_PHONE = "text"; 
  16.     final String ATTRIBUTE_NAME_IMAGE = "image"; 
  17.  
  18.     @Override 
  19.     protected void onCreate(Bundle savedInstanceState) { 
  20.         super.onCreate(savedInstanceState); 
  21.         setContentView(R.layout.rest_list); 
  22.     
  23.         ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>( 
  24.                 name_Rest.length); 
  25.         Map<String, Object> m; 
  26.  
  27.         for (int i = 0; i < name_Rest.length; i++) { 
  28.             m = new HashMap<String, Object>(); 
  29.             m.put(ATTRIBUTE_NAME_NAME, name[i]); 
  30.             m.put(ATTRIBUTE_NAME_ADDRESS, address[i]); 
  31.             m.put(ATTRIBUTE_NAME_PHONE, phone[i]); 
  32.             m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.ic_launcher); 
  33. //            m.put(ATTRIBUTE_NAME_IMAGE, logo_url_Rest[i]); 
  34.             data.add(m); 
  35.         } 
  36.  
  37.         String[] from = { ATTRIBUTE_NAME_NAME, ATTRIBUTE_NAME_ADDRESS, ATTRIBUTE_NAME_PHONE, 
  38.                 ATTRIBUTE_NAME_IMAGE }; 
  39.  
  40.         int[] to = { R.id.tvName, R.id.tvAddress, R.id.tvPhone, R.id.ivImg }; 
  41.  
  42.         sAdapter = new SimpleAdapter(this, data, R.layout.item_rest, 
  43.                 from, to); 
  44.  
  45.         lvSimple = (ListView) findViewById(R.id.lvSimple); 
  46.         lvSimple.setAdapter(sAdapter); 
  47.  
  48.  
  49.         lvSimple.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
  50.             public void onItemClick(AdapterView<?> parent, View view, 
  51.                                     int position, long id) { 
  52.                 Log.d(LOG_TAG, "itemClick: position = " + position + ", id = " 
  53.                         + id); 
  54.  
  55.             } 
  56.         }); 
  57.     } 


Проблема состоит в том, что при запуске получаю такую картину:


Вложения:
Комментарий к файлу: screen
pic.jpg
pic.jpg [ 15.37 KiB | Просмотров: 6349 ]
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 11 ноя 2014, 07:37 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. final String ATTRIBUTE_NAME_NAME = "text";
  2. final String ATTRIBUTE_NAME_ADDRESS = "text";
  3. final String ATTRIBUTE_NAME_PHONE = "text";

что-то не так...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 11 ноя 2014, 08:02 

Зарегистрирован: 11 мар 2013, 14:20
Сообщений: 51
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Да и тут нелогично:
m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_NAME, name[i]);
m.put(ATTRIBUTE_NAME_ADDRESS, address[i]);
m.put(ATTRIBUTE_NAME_PHONE, phone[i]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.ic_launcher);
// m.put(ATTRIBUTE_NAME_IMAGE, logo_url_Rest[i]);
data.add(m);

Может нужно создать свой класс с полями name, address, phone, etc. и потом экземпляры класса помещать в коллекцию?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 11 ноя 2014, 08:13 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
нет, остальное вроде все по уроку.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 11 ноя 2014, 11:43 

Зарегистрирован: 28 окт 2014, 14:43
Сообщений: 11
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
finberg писал(а):
Да и тут нелогично:
m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_NAME, name[i]);
m.put(ATTRIBUTE_NAME_ADDRESS, address[i]);
m.put(ATTRIBUTE_NAME_PHONE, phone[i]);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.ic_launcher);
// m.put(ATTRIBUTE_NAME_IMAGE, logo_url_Rest[i]);
data.add(m);

Может нужно создать свой класс с полями name, address, phone, etc. и потом экземпляры класса помещать в коллекцию?



Вы имеете в виду создать кастомный адаптер как в уроке 54?
Или это применимо и для SimpleAdapter?
А, что не логично?
Я думал, что адаптер берет поэлементно значения с from и to и сопостовляет их...
поэтому для каждого вью указал строковое значение.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 11 ноя 2014, 13:50 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 16:08
Сообщений: 1107
Откуда: Ukraine
Благодарил (а): 31 раз.
Поблагодарили: 175 раз.
Немного про ассоциативные массивы: Данные хранятся как ключ - значение
Код: [ Загрузить ] [ Скрыть ]
  1. m.put(ATTRIBUTE_NAME_NAME, name[i]);  
  2. m.put(ATTRIBUTE_NAME_ADDRESS, address[i]);  
  3. m.put(ATTRIBUTE_NAME_PHONE, phone[i]);  

m.put(ключ, значение)

Код: [ Загрузить ] [ Скрыть ]
  1.     final String ATTRIBUTE_NAME_NAME = "text";  
  2.     final String ATTRIBUTE_NAME_ADDRESS = "text";  
  3.     final String ATTRIBUTE_NAME_PHONE = "text";  

Три одинаковых ключа. Вопрос: что доставать из массива по ключу "text" ?

Адаптер сам разберется, что и куда присваивать в зависимости от типа входных данных. Если передать ему String который будет доставаться по ключу "video", он достанет Стрингу и поймет, что это текст, а не видео. Тебе нужно следить, чтобы данные по ключу, и view элемент могли подойти друг другу, т.е. если по ключу доставать boolean, а вью будет текст, то ничего хорошего не выйдет.

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 11 ноя 2014, 14:01 

Зарегистрирован: 28 окт 2014, 14:43
Сообщений: 11
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
doter.ua писал(а):
Немного про ассоциативные массивы: Данные хранятся как ключ - значение
Код: [ Загрузить ] [ Скрыть ]
  1. m.put(ATTRIBUTE_NAME_NAME, name[i]);  
  2. m.put(ATTRIBUTE_NAME_ADDRESS, address[i]);  
  3. m.put(ATTRIBUTE_NAME_PHONE, phone[i]);  

m.put(ключ, значение)

Код: [ Загрузить ] [ Скрыть ]
  1.     final String ATTRIBUTE_NAME_NAME = "text";  
  2.     final String ATTRIBUTE_NAME_ADDRESS = "text";  
  3.     final String ATTRIBUTE_NAME_PHONE = "text";  

Три одинаковых ключа. Вопрос: что доставать из массива по ключу "text" ?

Адаптер сам разберется, что и куда присваивать в зависимости от типа входных данных. Если передать ему String который будет доставаться по ключу "video", он достанет Стрингу и поймет, что это текст, а не видео. Тебе нужно следить, чтобы данные по ключу, и view элемент могли подойти друг другу, т.е. если по ключу доставать boolean, а вью будет текст, то ничего хорошего не выйдет.


Спасибо! не учел,что для ArrayList это будет являться ключом...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 21 ноя 2014, 21:29 

Зарегистрирован: 08 ноя 2014, 18:29
Сообщений: 3
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
А не подскажете как передать изображения с SD в listview?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 21 дек 2015, 17:56 

Зарегистрирован: 02 июл 2015, 14:18
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Добрый день!
Подскажите как передать изображение адаптеру, которое храниться на SD.
Я делаю приложение типа новостной ленты, скачиваю XML-файл, разбираю его парсером, скачиваю по ссылкам изображения, сохраняю их во внешнем хранилище и т.д.

Пытаюсь делать так:

File imgFile = new File(getExternalCacheDir()+ File.separator + "ImgFolder" + File.separator+"filename.jpeg");
...
if(imgFile.exists()){
m.put("image", BitmapFactory.decodeFile(imgFile.getAbsolutePath());
}
...
String[] from = {"image", "title", "date","author"};
int[] to = { R.id.newImg, R.id.newTitle, R.id.newDate, R.id.newAuthor };

но картинка не передается в newImg.

Картинка доступна, т.к. если устанавливать ее во вью типа так:

Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
newImg.setImageBitmap(myBitmap);

то все работает. А в листвью вот не передается.
Подскажите, в каком направлении думать? Чувствую, что я близок к разгадке, но голова не варит уже.
Спасибо.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 22 дек 2015, 11:51 

Зарегистрирован: 02 июл 2015, 14:18
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
В общем, сам и отвечу.
Выяснилось, что SimpleAdapter хочет на вход либо int либо string, а никакие не Bitmap'ы.
Заменил строку
m.put("image", BitmapFactory.decodeFile(imgFile.getAbsolutePath());
на
m.put("image", getExternalCacheDir()+ File.separator + "ImgFolder" + File.separator+ "filename.jpeg");
и все заработало.
Всем спасибо)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 09 мар 2016, 04:21 
Аватар пользователя

Зарегистрирован: 05 мар 2016, 16:01
Сообщений: 2
Откуда: Odessa
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
У меня в item.xml в строке android:src="@drawable/ic_launcher" не находит его, этот файл должен быть прямо в папке drawable моего проекта?

Все разобрался с папками =)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 14 мар 2016, 13:50 

Зарегистрирован: 10 мар 2016, 15:20
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Жаловался на "drawable". Ошибка "no resource found that matches the given name (at 'src' with value '@drawable/ic_launcher')" в файле item.xml. И в mainactivity.java схожая ошибка на дроубл.
Погуглил и заменил в двух местах слово "drawable" на "mipmap" и всё заработало.
Насколько я понял, пример или работает только на eclipse, или для более старой версии Android Studio.
А что такое mipmap? Есть ли разница от drawable?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 86 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB