Код: Выделить всё
ArrayList<Map<String, Object>> data
Код: Выделить всё
ArrayList<Map<String, Object>> data
При нажатии на пункт списка тебе нужно сделать одну только вещь (ищи в уроке!) - определить id записи в ArrayList-е, по которой нажал пользователь.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);
Но как всё таки вытянуть?
Foenix писал(а):При нажатии на пункт списка тебе нужно сделать одну только вещь (ищи в уроке!) - определить id записи в ArrayList-е, по которой нажал пользователь.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);
Но как всё таки вытянуть?
А затем уже бросить думать про ListView и из ArrayList-а доставать KEY_VALUE, KEY_VALUE2, KEY_VALUE3 в которых, судя по всему и находятся твои ФИО.
не очень видимо много. Внимательно читай уроки дальше, там есть поиск по mapIvan_P писал(а):.Столько уже всего перепробовал
Код: Выделить всё
Map<String, Object> m = new HashMap<String, Object>();
m.put("text", TaskElement.getTextContent());
switch(typetask) {
case 1: m.put("background", R.color.PracticeTileBackgroundBrush); break;
case 2: m.put("background", R.color.TheoryTileBackgroundBrush); break;
case 3: m.put("background", R.color.ComboTileBackgroundBrush); break;
default: break;
}
data.add(m);
Код: Выделить всё
String[] from = { "text", "background"};
int[] to = { R.id.LessTitle, R.id.TileLayout};
SimpleAdapter sAdapter = new SimpleAdapter(this, data, R.layout.smalllesstile, from, to);
TasksGrid.setAdapter(sAdapter);
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TileLayout"
android:layout_width="150dp"
android:layout_height="150dp"
android:columnCount="1"
android:rowCount="2"
android:layout_margin="5dp"
android:background="@color/ComboTileBackgroundBrush">
<TextView
android:id="@+id/LessTitle"
android:layout_column="0"
android:layout_row="0"
android:layout_width="150dp"
android:layout_height="100dp"
android:gravity="left"
android:textColor="@color/FontColor"
android:textSize="18sp"
/>
<TextView
android:id="@+id/LessNumber"
android:layout_column="0"
android:layout_row="1"
android:layout_width="150dp"
android:layout_height="50dp"
android:gravity="right"
android:textColor="@color/FontColor"
android:textSize="20sp" />
</GridLayout>
Код: Выделить всё
public class RestListAdapter extends ActionBarActivity {
String[] name = new String[]{"Первый", "Второй", "Третий"};
String[] address = new String[]{"ул. Имени Улицы 1", "ул. Имени Улицы 2", "ул. Имени Имени"};
String[] phone = new String[]{"0569", "05692", "056"};
ListView lvSimple;
SimpleAdapter sAdapter;
final String LOG_TAG = "myLogs";
// имена атрибутов для Map
final String ATTRIBUTE_NAME_NAME = "text";
final String ATTRIBUTE_NAME_ADDRESS = "text";
final String ATTRIBUTE_NAME_PHONE = "text";
final String ATTRIBUTE_NAME_IMAGE = "image";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rest_list);
ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>(
name_Rest.length);
Map<String, Object> m;
for (int i = 0; i < name_Rest.length; i++) {
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);
}
String[] from = { ATTRIBUTE_NAME_NAME, ATTRIBUTE_NAME_ADDRESS, ATTRIBUTE_NAME_PHONE,
ATTRIBUTE_NAME_IMAGE };
int[] to = { R.id.tvName, R.id.tvAddress, R.id.tvPhone, R.id.ivImg };
sAdapter = new SimpleAdapter(this, data, R.layout.item_rest,
from, to);
lvSimple = (ListView) findViewById(R.id.lvSimple);
lvSimple.setAdapter(sAdapter);
lvSimple.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.d(LOG_TAG, "itemClick: position = " + position + ", id = "
+ id);
}
});
}
}
finberg писал(а):Да и тут нелогично:
m = new HashMap<String, Object>();
m.put(ATTRIBUTE_NAME_NAME, name);
m.put(ATTRIBUTE_NAME_ADDRESS, address);
m.put(ATTRIBUTE_NAME_PHONE, phone);
m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.ic_launcher);
// m.put(ATTRIBUTE_NAME_IMAGE, logo_url_Rest);
data.add(m);
Может нужно создать свой класс с полями name, address, phone, etc. и потом экземпляры класса помещать в коллекцию?
Код: Выделить всё
m.put(ATTRIBUTE_NAME_NAME, name[i]);
m.put(ATTRIBUTE_NAME_ADDRESS, address[i]);
m.put(ATTRIBUTE_NAME_PHONE, phone[i]);
Код: Выделить всё
final String ATTRIBUTE_NAME_NAME = "text";
final String ATTRIBUTE_NAME_ADDRESS = "text";
final String ATTRIBUTE_NAME_PHONE = "text";
Спасибо! не учел,что для ArrayList это будет являться ключом...doter.ua писал(а):Немного про ассоциативные массивы: Данные хранятся как ключ - значениеm.put(ключ, значение)Код: Выделить всё
m.put(ATTRIBUTE_NAME_NAME, name[i]); m.put(ATTRIBUTE_NAME_ADDRESS, address[i]); m.put(ATTRIBUTE_NAME_PHONE, phone[i]);
Три одинаковых ключа. Вопрос: что доставать из массива по ключу "text" ?Код: Выделить всё
final String ATTRIBUTE_NAME_NAME = "text"; final String ATTRIBUTE_NAME_ADDRESS = "text"; final String ATTRIBUTE_NAME_PHONE = "text";
Адаптер сам разберется, что и куда присваивать в зависимости от типа входных данных. Если передать ему String который будет доставаться по ключу "video", он достанет Стрингу и поймет, что это текст, а не видео. Тебе нужно следить, чтобы данные по ключу, и view элемент могли подойти друг другу, т.е. если по ключу доставать boolean, а вью будет текст, то ничего хорошего не выйдет.