ExpandableListView
アイテムの種類に応じて、2つの異なるレイアウトを使用しようとしています。このとき、基本的な機能を1つだけ作成しました。でグループを選択した後listview
、子アイテムのテキストが間違って表示されます(異なるアイテムのテキストが混在しています)
私のadapter
ソースコードは次のとおりです。
SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
this,
groupData,
com.oleg.mart.foreign.R.layout.group_row,
groupFrom,
new int[] { com.oleg.mart.foreign.R.id.Group },
childData,
R.layout.simple_list_item_1,
childFrom,
childTo)
{
@Override
public int getChildTypeCount() {
return 2;
}
/*@Override
public int getChildrenCount(int groupPosition)
{
return childData.get(groupPosition).size();
} */
@Override
public int getChildType(int groupPosition, int childPosition)
{
int result = 0;
if (childPosition == getChildrenCount(groupPosition) - 1)
result = 1;
return result;
}
@Override
public View getChildView (
int groupPosition, int childPosition,
boolean isLastChild,
View convertView, ViewGroup parent)
{
if (convertView == null) {
TextView textView = null;
LayoutInflater inflater = (LayoutInflater)getSystemService(getBaseContext().LAYOUT_INFLATER_SERVICE);
int itemType = getChildType(groupPosition,childPosition);
String myText = childData.get(groupPosition).get(childPosition).get("chapter");
switch (itemType) {
case 0:
convertView = inflater.inflate(com.oleg.mart.foreign.R.layout.child_row_notlast, null);
textView = (TextView)convertView.findViewById(com.oleg.mart.foreign.R.id.NChild);
textView.setPadding(30,20,30,20);
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
textView.setText(Html.fromHtml(myText));
break;
case 1:
convertView = inflater.inflate(com.oleg.mart.foreign.R.layout.child_row, null);
textView = (TextView)convertView.findViewById(com.oleg.mart.foreign.R.id.Child);
textView.setPadding(30,20,30,20);
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
textView.setText(Html.fromHtml(myText));
break;
}
}
return convertView;
}
};
ご覧のとおり、最後の子アイテムに別のスタイルを設定しようとしています。何が間違っている可能性がありますか?
正しいgetChildView
方法:
TextView textView = null;
String myText = null;
myText = childData.get(groupPosition).get(childPosition).get("chapter");
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)getSystemService(getBaseContext().LAYOUT_INFLATER_SERVICE);
int itemType = getChildType(groupPosition,childPosition);
switch (itemType) {
case 0:
convertView = inflater.inflate(com.oleg.mart.foreign.R.layout.child_row_notlast, null);
break;
case 1:
convertView = inflater.inflate(com.oleg.mart.foreign.R.layout.child_row, null);
break;
}
}
textView = (TextView)convertView.findViewById(com.oleg.mart.foreign.R.id.NChild);
textView.setPadding(30,20,30,20);
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
textView.setText(Html.fromHtml(myText));
return convertView;