0

私はAndroid 用のアプリを開発しており、 ExpandableListActivityを使用しています。

次の形式の sqlite db からデータを抽出しています。

Id | Category | Name 

CODE
は、データを取得するコードです。

List<String> groups = new ArrayList<String>();
List<String> books = new ArrayList<String>();
List<String> elecs = new ArrayList<String>();
List<List<String>> children = new ArrayList<List<String>>();

 Cursor c = mDbHelper.fetchAllItems();

        startManagingCursor(c);

        // for all rows
        for(int i=0; i<c.getCount(); i++)
        {
            c.moveToNext();
            String t = c.getString(c.getColumnIndex("category"));

            switch (getCat(t))
            {
            case Books:
                books.add(c.getString(c.getColumnIndex("name")));
                Log.d("FROM: ", c.getString(c.getColumnIndex("name")));
                if(!(groups.contains("Books"))) groups.add("Books");

                break;
            case Electronics:

                elecs.add(c.getString(c.getColumnIndex("name")));               
                Log.d("FROM: ", c.getString(c.getColumnIndex("name")));
                if(!(groups.contains("Electronics"))) groups.add("Electronics");

                break;
            default:
                break;
            }   // end switch
        } // end for loop

        children.add(books);
        children.add(elecs);


ここでこのアプリを実行したときの出力は、画面がどのように見えるかです:

Books
Electronics

BooksまたはElectronicsをクリックすると、すべてが表示されます。このような:

Books
 [c programming, perl]
 [cd, laptop, psp]
Electronics
 [c programming, perl]
 [cd, laptop, psp]

問題
私は問題がこのメソッド(getChild)から来ていると思います:

public class MyExpandableListAdapter extends BaseExpandableListAdapter {

        List<String> GRP;
        List<List<String>> CHLD;

        public MyExpandableListAdapter(List<String> grps, List<List<String>> chldrn) {
            GRP = grps;
            CHLD = chldrn;
        }
...
...
public Object getChild(int groupPosition, int childPosition) {
    // CHLD[groupPosition][childPosition]; ORIGINAL, where CHLD was a 2d array
     return CHLD.get(childPosition);   MODIFIED
}

文字列のリストのリストを 2 次元配列に変換する必要がありますか?

4

1 に答える 1

1

不吉なものをどこでどのように使用するかがgetChild()わかりません。CHLDまた、[XXX] [XXX]の開始は有効なJava構文ではないため、「元の」が何であるか、また何が使用されたかもわかりません。また、電子機器のリストが本のリストと同じであることを確信していますか?データの解析が間違っているか、データベースに無効なデータが含まれている可能性があります。

しかし、あなたを助けるかもしれないものは次のとおりです:

  • 最初のサンプルでchildren.get(i)は、List<String>
  • 私はあなたの方法の中にそしてあなたの方法の中に理由があったgroupPositionと思います。ただし、現在の実装では完全に無視されます。childPositiongetChild()groupPosition

問題が正確に何であるかを知らずにあなたをさらに助けることはできません。

新しい編集に従って追加します。

yourCHLDは文字列のリストのリストです。正しい実装は次のようになります。

public class MyExpandableListAdapter extends BaseExpandableListAdapter {

        List<String> GRP;
        List<List<String>> CHLD;

        public MyExpandableListAdapter(List<String> grps, List<List<String>> chldrn) {
            GRP = grps;
            CHLD = chldrn;
        }

    public Object getChild(int groupPosition, int childPosition) {
         return CHLD.get(groupPosition).get(childPosition);
    }
}
于 2012-07-26T23:01:23.503 に答える