シナリオ: n 個のタブがあり、各タブには独自のリストビューがあります。リストビューを生成するために配列アダプターを使用しています。arrayadaper に渡される配列には、オブジェクトの配列があります。各オブジェクトには と があります。メニュータイプに基づいて、メニュータイプが「menugroup」の場合、別のレイアウトを使用して描画し、背景を赤に設定する必要があります。
質問は簡単です..リストビューのメニューグループ行のプロパティを上下にスクロールすると、リストビューの他の行に渡されます。言い換えれば、スクロールはセパレーターを乱します。
以下はアダプタのコードです。修正が必要なところまで教えていただけませんか?前もって感謝します。
public class MyCustomAdapter extends ArrayAdapter<Menu> {
private ArrayList<Menu> menuItemList;
Context context;
LayoutInflater vi;
public MyCustomAdapter(Context context ,ArrayList<Menu> menu) {
super(context, 0, menu );
this.menuItemList = new ArrayList<Menu>();
this.menuItemList.addAll(menu);
this.context =context;
vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
private class ViewHolder {
TextView menuItem;
TextView menuGroup;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
int type =0;
String menuType = menuItemList.get(position).getMenuType();
if (menuType.equals("menugroup"))
type=1;
if (menuType.equals("menuitem"))
type=2;
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case 1:
convertView = vi.inflate(R.layout.group, null);
holder.menuItem = (TextView) convertView.findViewById(R.id.tvGroup);
convertView.setBackgroundColor(Color.RED);
break;
case 2:
convertView = vi.inflate(R.layout.item, null);
holder.menuItem = (TextView) convertView.findViewById(R.id.tvItem);
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
switch (type) {
case 1:
holder.menuItem.setText(menuItemList.get(position).getItemName()) ;
convertView.setBackgroundColor(Color.RED);
break;
case 2:
holder.menuItem.setText(menuItemList.get(position).getItemName()) ;
break;
}
return convertView;
}
}