0

これは、拡張可能なリストビューを使用してデータベースからデータを読み取り、それを表示するアプリケーションのように見えます。範囲は3か月または12週間です。今私が欲しいのは毎週のコンテンツだけを表示することです!! WEEKラベルを表示したくない!たとえば、この12週間の間にデータがある場合は、それを表示します(ただし、日のラベルとデータの説明のみを表示します)が、そうでない場合は、何も表示しません。(週は表示されません!)また、各アイテムの折りたたみを無効にしたいです。

ここに画像の説明を入力してください

これは私のアダプターです

public class MyCareHeaderExpandableListAdapter extends MyCareExpandableListAdapter {

public MyCareHeaderExpandableListAdapter(Context context) {
    super(context);
}
//--------------------------------------------------------------------

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    //Log.d("getChildView", "getChildView " + groupPosition);
     //View view = adapter.getView(childPosition, convertView, parent);
    Item item = getChild(groupPosition, childPosition);
    return setContentView(R.layout.expandable_list_item, convertView, item);
}
//--------------------------------------------------------------------
@Override
public long getChildId(int groupPosition, int childPosition) {
    int id = ((ScheduleItem)m_childrens.get(groupPosition).getItem(childPosition)).getID();
    return id;
}
//--------------------------------------------------------------------

/**
 * This function is called to generate the view for the groups.
 */
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    String name[] = getGroup(groupPosition);

    //  Generating header
    //  A header has no child, and begins the name with "Week"
    //if (getChildrenCount(groupPosition) == 0 && (name[1] == null)) { 
    if (name[1] == null) { 
        convertView = m_inflater.inflate(R.layout.expandable_list_week, null);
        TextView textView = (TextView)convertView.findViewById(R.id.txtHeader);
        Font.setToView(textView, Font.BOLD);
        textView.setText(name[0]);
    }
    //  Generating group name
    else {
        //Log.d("getGroupView", name);
        convertView = m_inflater.inflate(R.layout.expandable_list_group, null); 
        TextView textView = (TextView)convertView.findViewById(R.id.txtDay);
        textView.setText(name[0]);
        Font.setToView(textView, Font.BOLD);

        TextView textView2 = (TextView)convertView.findViewById(R.id.txtDate);
        textView2.setText(name[1]);
        Font.setToView(textView2, Font.BOLD);
    }
    return convertView;
}
4

1 に答える 1

1

あなたが扱っている2つの問題:

(1) エントリがない週はグループ ビューを表示しない

このため、「空の」週のエントリを含むカーソルが返されないように、グループ カーソル クエリを変更することをお勧めします。

(2) ユーザーがグループを折りたたむことを許可しない

これと同じ目的でOnGroupClickListener、グループのクリックを傍受し、基本的に何もしないように を実装しました。これにより、グループを展開または折りたたむタイミングを制御できます。ここで私のリスナーの実装:

/**
 * Only purpose here is to intercept taps on the header rows and ignore them
 * (avoid expandable list view adapter from expanding/collapsing).
 */
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
        int groupPosition, long id) {
    return true;
} 

編集:

すべてのグループを展開するには:

    int groupCount = myCursorTreeAdapter.getGroupCount();
    for (int i = 0; i < groupCount; i++) {
        myExpandableListView().expandGroup(i);
    }
于 2012-11-07T16:27:06.863 に答える