-1

コンテンツがデータベースから読み込まれる展開可能なリスト ビューを使用したいと考えています。

コードを書いていますが、適切な出力が得られません。すべての親のすべてのレコードを提供しますが、1 つの親のみに関連する子のみを表示し、それぞれの親に従って他の子を表示したいと考えています。次のような出力が得られました。

  • 日付1

    • データ1
    • データ2
  • 日付2

    • データ1
    • データ2

これが問題です。以下のように出力したい

  • 日付1
    • データ1
  • 日付2
    • データ2

// 以下はアクティビティクラス

public class FavoriteActivity extends Activity {

/** Final static constant. */
private static final String TAG = "FAVORITE_ACTIVITY";

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_favorite);

    Cursor mCursor = null;
    Cursor mDataCursor = null;
    FavoriteNews mFavoriteNews = null;
    List<String> mList;
    List<FavoriteNews> mFavoriteList = new ArrayList<FavoriteNews>();
    mCursor = DBHandler.getData("select DISTINCT " + DBHelper.NEWS_DATE + " from " + DBHelper.FAVOURITE_TABLE + "",
            null);

    if (mCursor.getCount() != 0) {
        mList = new ArrayList<String>();
        while (mCursor.moveToNext()) {
            mList = new ArrayList<String>();
            mDataCursor = DBHandler.getData("select " + DBHelper.NEWS_LABEL + " from " + DBHelper.FAVOURITE_TABLE
                    + " where " + DBHelper.NEWS_DATE + "='" + mCursor.getString(0) + "'", null);
            if (mDataCursor.getCount() != 0) {
                while (mDataCursor.moveToNext()) {
                    mFavoriteNews = new FavoriteNews();
                    String news = mDataCursor.getString(0);
                    mList.add(news);
                }
                mDataCursor.close();
                String date = mCursor.getString(0);
                mFavoriteNews.setDate(date);
                mFavoriteNews.setFavNews(mList);
            }
            mFavoriteList.add(mFavoriteNews);
        }
        try {
            ExpandableListView mExList = (ExpandableListView) findViewById(R.id.expandable_list);
            mExList.setAdapter(new CustomExpandableAdapter(this, mFavoriteList));

            mCursor.close();
        } catch (Exception e) {
            Log.e(TAG, "Data not found", e);
        } finally {
            if (mDataCursor != null) {
                mDataCursor.close();
            }
            if (mCursor != null) {
                mCursor.close();
            }
        }
    } else {
        Toast.makeText(this, "No Favorite Items are Available", Toast.LENGTH_SHORT).show();
    }
}

}

//これは私の別のクラスです

public class FavoriteNews {
    String date;
    List<String> favNews;

    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public List<String> getFavNews() {
        return favNews;
    }
    public void setFavNews(List<String> favNews) {
        this.favNews = favNews;
    }
}

// これはアダプタのコードです

public class CustomExToDoAdapter extends BaseExpandableListAdapter{

    LayoutInflater inflater;
    ArrayList<ToDoTaskList> list;

    public CustomExToDoAdapter(Context context,ArrayList<ToDoTaskList> list){
        inflater=LayoutInflater.from(context);
        this.list=list;
    }


    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return list.get(groupPosition).getTaskList().get(childPosition);
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {
        if(convertView==null){
            convertView=inflater.inflate(R.layout.child_row, parent,false);
        }
        TextView childTxt=(TextView) convertView.findViewById(R.id.childItem);
        childTxt.setText(list.get(groupPosition).getTaskList().get(childPosition));
        childTxt.setPadding(40, 5, 5, 5);
        return convertView;
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return list.get(groupPosition).getTaskList().size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return list.get(groupPosition).getDate();
    }

    @Override
    public int getGroupCount() {
        return list.size();
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {
        if(convertView==null){
            convertView=inflater.inflate(R.layout.header_row, parent,false);
        }
        TextView txtView=(TextView) convertView.findViewById(R.id.header);
        txtView.setText(getGroup(groupPosition).toString());
        txtView.setPadding(50, 10, 10, 10);
        return convertView;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
    public void registerDataSetObserver(DataSetObserver observer) 
     {

            /* used to make the notifyDataSetChanged() method work */
            super.registerDataSetObserver(observer);
            //Log.i("TAG","Inside Cons 10");
        }
}
4

1 に答える 1