2012-03-21 3 views
0

Я видел приложение, у которого была хорошая структура меню, которую я хочу воспроизвести в своем собственном приложении, и хотел знать, как вы думаете, что это сделано и как я должен подходить к нему. Вот скриншот:Android - ListView с изображениями

MECRM Image

Это из мобильного приложения CRM (MECRM) и мне, кажется, быть ListView с заголовками и изображениями. Но мне интересно, это изображения или кнопки с изображениями в качестве фона из-за двух вещей;

1.) первое изображение «Объявления» отключено, поэтому, если это был ImageView, я не уверен, будет ли он делать то же самое. 2.) При нажатии на изображение возможности появляется другое изображение (как и все остальные изображения).

Я думаю, мой вопрос в том, какие элементы управления мне понадобятся для повторения этого?

ответ

0

Этот вид зрения вполне возможно с помощью ListView

Вы будете нуждаться, чтобы реализовать свой собственный ListAdapter с поведением пользовательских GetView. Основываясь на позиции представления, вы можете либо отобразить неактивный вид разделителя (который не будет доступен для клика), либо вы можете отобразить gridview для соответствующей категории. This tutorial может помочь вам начать реализацию пользовательских адаптеров с помощью getView.

Вот некоторые примеры кода на том, что GetView может выглядеть

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    boolean isDivider = false //TODO logic here 
    if (isDivider){ 
     if (v == null) { 
     LayoutInflater li = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = li.inflate(R.layout.custom_adapter_item, null); 
     } 
     Map<String, String> item = items.get(position); 
     initView(v, item); 
     return v; 
    } else{ 
     View v = null //TODO init divider view here 
     return v; 
    } 
} 

private void initView(View v, Map<String, String> item) { 
    String[] keys = DummyData.columns; 
    ((TextView) v.findViewById(R.id.value_left)).setText(item.get(keys[0])); 
    ((TextView) v.findViewById(R.id.value_right)).setText(item.get(keys[1])); 
} 

Вы будете иметь, чтобы раздуть макет GridView, где я надуть мой custom_adapter_item, но это основа для пользовательских ListView со сложным списком пункты

иерархия зрения будет в конечном итоге выглядит что-то вроде этого

  • ListView
    • Category1Header (LinearLayout))
      • Название (текстовое поле)
    • Category1Contents (GridView)
      • Cat1Cont1 (LinearLayout)
        • значок (изображение)
        • описание (текстовое поле)
    • Category2Header

Вы получаете идею

+0

Понадобилось время, чтобы обернуть мою голову вокруг того, что вы здесь объясняете, но теперь я это вижу. Благодаря! – Robert

+0

@Robert Я иногда прыгаю по ступенькам в голове, или экономя объяснения, когда я опережаю себя. Если вы хотите получить некоторые пояснения, прокомментируйте. –

0

Кажется, коллекция GridViews с 5 колонками. Элемент столбцов - TextView и ImageView.

-1

Для чего-то вроде этого я бы не рекомендовал Listview в качестве базы. Listview полезен, если у вас есть много похожих элементов, которые должны реагировать аналогичным образом. Для маленького количества. Из предметов с большим разнообразием это не ваш лучший выбор.

В качестве основы я бы использовал linearlayout или относительную компоновку (в зависимости от того, как вы хотите реагировать на разные размеры экрана).

Я бы разработал TextViews с соответствующим фоном 9 патчей, чтобы выглядеть как заголовки.

Для кнопок я бы использовал виджет кнопки с селектором в качестве андроида: фон.

Поэтому создайте XML-файл с приведенным ниже кодом в своей папке с возможностью переноса и обменивайте выталкиваемый с именами ваших чертежей.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/btn_add_sel0" /> 
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/btn_add_presssel0" /> 
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/btn_add_press0" /> 
    <item android:drawable="@drawable/btn_add_norm0" /> 
</selector> 
+0

Argh может кто-то пожалуйста, добавьте право ', чтобы показать XML. Я использую свой мобильный телефон и не могу найти правильный символ. – KarlKarlsom

+0

Я внес изменения для вас, и, надеюсь, они появятся для всех ... но я понимаю, о чем вы говорите. Мне придется попробовать это и сообщить вам. – Robert

0

Я думаю, что этого типа представления списка макетов недостаточно.

Вы должны использовать ScrollView как родительский, TextView и GridView в качестве одного макета, а каждый тип этого макета как детей в ScrollView, как показано ниже.

child_view

<LinearLayout vertical > 
<TextView /> 
<GridView /> 
</LinearLayout> 

main_view

<ScrollView> 
<child_view /> 
<child_view /> 
<child_view /> 
....... 
</ScrollView> 

Я надеюсь, что это может помочь вам.

Смежные вопросы