@relgames
Java Developer

Разработка под Android: как сделать Activity по типу Настройки -> О телефоне -> Общая информация?

Перерыл кучу документации, не могу понять, как сделать простейший таск: нужно нарисовать caption-value список, чтобы было типа как в стандартном приложении Настройки -> О телефоне -> Общая информация (пример)


Вроде как это ListView, по-идее, нужен какой-то адаптер, но стандартные адаптеры рисуют список из 1 значения, а у меня 2 значения — одно заголовок, большим шрифтом, и еще одно маленьким шрифтов. Получает, нужно писать свой адаптер, плюс нужно писать свой xml для строки… Как-то странно много действий для того, что выглядит как стандартный элемент системы (такой список много где видел).


Задача вроде как простая, но вот ступор, не могу что-то сообразить…
  • Вопрос задан
  • 3449 просмотров
Пригласить эксперта
Ответы на вопрос 7
Alibobaevich
@Alibobaevich
может стандартным способом:
developer.android.com/reference/android/preference/PreferenceScreen.html

<PreferenceScreen
xmlns:android=«schemas.android.com/apk/res/android»

>
<CheckBoxPreference
android:key=«PREF_SLEEP»
android:title=«Prevent from sleeping»
android:summary=«keep the screen On»
android:defaultValue=«true»

/>
Ответ написан
@Hitory
Я, конечно, далеко не знаток платформы, но вот что смог придумать:
-Все таки написать свой адаптер, используя свой класс с Map
-Сделать два списка. В одном строки, которые передаются адаптеру ListView, а во втором строки которые выбираются в getView адаптера
Ответ написан
Комментировать
Если очень не хочется писать самому, можно попробовать стандартный адаптер со стандартными лейаутами:

developer.android.com/reference/android/R.layout.html#simple_list_item_2

Сам не пробовал, так что не обещаю, что оно подойдет. Но судя по упоминаниям в разных примерах, это именно то, что нужно.
Ответ написан
Комментировать
Комментировать
palmut
@palmut
А вот такой вариант не подойдет?

Это код активити:
public class TestActivity extends ListActivity {

	private final static String TITLE_KEY = "title";
	private final static String DESCRIPTION_LEY = "description";

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		List<Map<String, String>> data = new ArrayList<Map<String, String>>();
		int count = 10;
		for (int i = 1; i <= count; i++) {
			final HashMap<String, String> item = new HashMap<String, String>();
			item.put(TITLE_KEY, String.format("Title %d", i));
			item.put(DESCRIPTION_LEY, String.format("Description %d", i));
			data.add(item);
		}

		setListAdapter(new SimpleAdapter(this, data, android.R.layout.simple_list_item_2, new String[] { TITLE_KEY,
						DESCRIPTION_LEY }, new int[] { android.R.id.text1, android.R.id.text2 }));
	}

}


А это код лейаута mail.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" />

    <TextView
        android:id="@android:id/empty"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="No data" />

</LinearLayout>
Ответ написан
@relgames Автор вопроса
Java Developer
Вроде как нашел решение developer.android.com/reference/android/app/ListActivity.html
Буду еще смотреть…
Ответ написан
@relgames Автор вопроса
Java Developer
В итоге сделал все методом копи-паста (тупо вручную задал layout), у меня количество элементов в списке и их названия известны заранее, динамически меняются только значения элементов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы