アイテムを含むスクロール可能なリストビューがあります。各項目は以下のレイアウトになっています。
必要に応じて id で LinearLayout を表示または非表示にしcustomer_menu_index
ます。ラメイン要素は、すべてのメソッド呼び出しで表示されます。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:id="@+id/customer_menu_index" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/menu_listview_item_alphabet_bg" android:orientation="horizontal" android:visibility="gone"> <TextView android:id="@+id/customer_menu_index_letter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:paddingBottom="5dp" android:paddingTop="5dp" android:text="bla" android:textColor="@color/menu_listview_item_title" android:textSize="10sp" android:textStyle="bold" android:typeface="sans" /> </LinearLayout> <RelativeLayout android:id="@+id/customer_menu_item" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/menu_listview_item_selector" android:orientation="horizontal" > <TextView android:id="@+id/customer_menu_item_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="0dp" android:paddingBottom="0dp" android:paddingTop="5dp" android:textColor="@color/menu_listview_item_title" android:textSize="10sp" android:textStyle="bold" android:typeface="sans" /> <TextView android:id="@+id/customer_menu_item_subtitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/customer_menu_item_title" android:layout_marginLeft="5dp" android:layout_marginRight="0dp" android:paddingBottom="5dp" android:paddingTop="1dp" android:textColor="@color/menu_listview_item_subtitle" android:textSize="8sp" android:textStyle="normal" android:typeface="sans" /> </RelativeLayout> </LinearLayout>
getView
のメソッドでこのレイアウトを使用しますBaseAdapter
。getView メソッドの実装。
public View getView(int position, View convertView, ViewGroup parentView) {
View vi = convertView;
if (convertView == null)
{
vi = inflater.inflate(R.layout.customer_menu_index_item, null);
}
LinearLayout indexLayout = (LinearLayout) vi.findViewById(R.id.customer_menu_index);
HashMap<String, String> category = new HashMap<String, String>();
category = mData.get(position);
String currentIndexLetter = category.get(CustomerMenu.KEY_COMPANY).substring(0, 1);
if (currentIndexLetter.equals(mLastIndexLetter) == false)
{
TextView letter = (TextView) vi.findViewById(R.id.customer_menu_index_letter);
letter.setText(currentIndexLetter);
mLastIndexLetter = currentIndexLetter;
indexLayout.setVisibility(LinearLayout.VISIBLE);
}
TextView title = (TextView) vi.findViewById(R.id.customer_menu_item_title);
TextView subtitle = (TextView) vi.findViewById(R.id.customer_menu_item_subtitle);
title.setText(category.get(CustomerMenu.KEY_COMPANY));
subtitle.setText(category.get(CustomerMenu.KEY_CONTACT_PERSON));
return vi;
}
ロード後は正常に動作します。しかし、リストビューをスクロールすると、アイテムの順序が変更されます。