Освой программирование играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Простенький список с разными значками для каждого пункта и текстом в два ряда, когда имеется небольшой массив для отображения.
Добавим в основную разметку компонент ListView.
Создадим разметку для отдельного пункта списка (list_item.xml).
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:orientation="vertical">
<TextView
android:id="@+id/textview_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
tools:text="This is Title" />
<TextView
android:id="@+id/textview_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="This is Description" />
</LinearLayout>
<ImageView
android:id="@+id/imageview_icon"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@mipmap/ic_launcher" />
</LinearLayout>
Выводим данные в список
package ru.alexanderklimov.listview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
private static final String TITLE = "catname"; // Верхний текст
private static final String DESCRIPTION = "description"; // ниже главного
private static final String ICON = "icon"; // будущая картинка
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(R.id.listView);
// создаем массив списков
ArrayList<HashMap<String, Object>> catList = new ArrayList<>();
HashMap<String, Object> hashMap;
hashMap = new HashMap<>();
hashMap.put(TITLE, "Рыжик"); // Название
hashMap.put(DESCRIPTION, "Рыжий и хитрый"); // Описание
hashMap.put(ICON, R.drawable.cat_gold); // Картинка
catList.add(hashMap);
hashMap = new HashMap<>();
hashMap.put(TITLE, "Васька");
hashMap.put(DESCRIPTION, "Слушает да ест");
hashMap.put(ICON, R.drawable.cat_green);
catList.add(hashMap);
hashMap = new HashMap<>();
hashMap.put(TITLE, "Мурзик");
hashMap.put(DESCRIPTION, "Спит и мурлыкает");
hashMap.put(ICON, R.drawable.cat_yellow);
catList.add(hashMap);
hashMap = new HashMap<>();
hashMap.put(TITLE, "Барсик");
hashMap.put(DESCRIPTION, "Болеет за Барселону");
hashMap.put(ICON, R.drawable.cat_white);
catList.add(hashMap);
SimpleAdapter adapter = new SimpleAdapter(this, catList,
R.layout.list_item, new String[]{TITLE, DESCRIPTION, ICON},
new int[]{R.id.textview_title, R.id.textview_description, R.id.imageview_icon});
// Устанавливаем адаптер для списка
listView.setAdapter(adapter);
listView.setOnItemClickListener(itemClickListener);
}
AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
HashMap<String, Object> itemHashMap =
(HashMap<String, Object>) parent.getItemAtPosition(position);
String titleItem = itemHashMap.get(TITLE).toString();
String descriptionItem = itemHashMap.get(DESCRIPTION).toString();
int imageItem = (int)itemHashMap.get(ICON);
Toast.makeText(getApplicationContext(),
"Вы выбрали " + titleItem + ". Он " + descriptionItem, Toast.LENGTH_SHORT)
.show();
}
};
}