プログラムで ExpandableListView を作成しようとしていますが、これまでのところスペースを予約していますが、スペースは完全に黒です! 何も表示されません。ここにはいくつかの特別な要件があります。
- XML ではなく、コードですべてを実行したい。これまでのところ、UI 全体に XML はありません。そのままにしておきたいと思います。
- 可能であれば、Activity からアクティビティを派生させたいと考えています。ExpandableListView がそれを望んでいるという理由だけで、クラスを変更するのはばかげていると思います。また、他のコントロールも奇妙なアクティビティの特別なクラスを必要とする場合はどうなるでしょうか? うまくいけば、Activity に ExpandableListView を持つことが可能ですよね?
したがって、これまでのアダプターのコードは次のとおりです。
// -------------------------------------------
// DoubleStringArrayExpandableListAdapter
// -------------------------------------------
public class DoubleStringArrayExpandableListAdapter extends BaseExpandableListAdapter
{
public ArrayList<String> Parents = new ArrayList<String>();
public ArrayList<String> Children = new ArrayList<String>();
public Activity mContext;
public Object getChild(int groupPosition, int childPosition)
{
return Children.get(groupPosition);
}
public long getChildId(int groupPosition, int childPosition)
{
return childPosition;
}
public int getChildrenCount(int groupPosition)
{
return 1;
}
public TextView getGenericView()
{
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
TextView textView = new TextView(mContext);
textView.setLayoutParams(lp);
// Center the text vertically
textView.setGravity(Gravity.CENTER);
// Set the text starting position
textView.setPadding(55, 0, 0, 0);
return textView;
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent)
{
TextView textView = getGenericView();
textView.setText(getChild(groupPosition, childPosition).toString());
return textView;
}
public Object getGroup(int groupPosition)
{
return Parents.get(groupPosition);
}
public int getGroupCount()
{
return Parents.size();
}
public long getGroupId(int groupPosition)
{
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
ViewGroup parent)
{
TextView textView = getGenericView();
textView.setText(getGroup(groupPosition).toString());
return textView;
}
public boolean isChildSelectable(int groupPosition, int childPosition)
{
return true;
}
public boolean hasStableIds()
{
return true;
}
}
そして、これが ExpandableListView を作成するための私のコードです:
listNews = new ExpandableListView(this);
adapterNews = new DoubleStringArrayExpandableListAdapter();
adapterNews.mContext = this;
listNews.setAdapter(adapterNews);
listNews.setVerticalScrollBarEnabled(true);
listNews.setScrollbarFadingEnabled(false);
//listNews.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
//listNews.setFocusableInTouchMode(true);
listNews.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 200/*doesnt workLayoutParams.WRAP_CONTENT*/));
lLayout.addView(listNews);
adapterNews.Parents.add("Parent");
adapterNews.Children.add("Child");
なぜうまくいかないのか、何が間違っているのか?どうもありがとう =)