Android 可扩展列表问题

Android 可扩展列表问题,android,expandablelistview,simplecursoradapter,Android,Expandablelistview,Simplecursoradapter,我正试图用SimpleCursorTreeAdapter构建expandableList,但我的列表不构成组,它将每个子元素作为组元素重复 我的数据格式为KEY_ROWID、KEY_NAME、KEY_EMAIL、KEY_ILID、KEY_KURUMID、KEY_BOLGEID 我的数据: (db,"Asli", "asli@gmail.com", 1, 1, 1); (db,"Osman Can", "osman@gmail.com", 1, 1, 1); (db,"Abuzer Kada

我正试图用SimpleCursorTreeAdapter构建expandableList,但我的列表不构成组,它将每个子元素作为组元素重复

我的数据格式为KEY_ROWID、KEY_NAME、KEY_EMAIL、KEY_ILID、KEY_KURUMID、KEY_BOLGEID


我的数据:

(db,"Asli", "asli@gmail.com", 1, 1, 1); 
(db,"Osman Can", "osman@gmail.com", 1, 1, 1); 
(db,"Abuzer Kadayif", "kadayif@gmail.com", 1, 2, 1); 

(db,"Emre", "emre@gmail.com", 1, 3, 2); 
(db,"Deniz", "deniz@gmail.com", 1, 4, 2); 

(db,"Simon Garfunkel", "simon@gmail.com", 1, 5, 0); 
(db,"Eric Clapton", "eric@gmail.com", 1, 6, 0); 
(db,"Neil Young", "neil@gmail.com", 1, 5, 0); 

这是我的代码:

String sqlString = "SELECT * " + " FROM " + Items.DATABASE_TABLE;

        Cursor mCursor = db.rawQuery(sqlString, null);

        SimpleCursorTreeAdapter mAdapter = new SimpleCursorTreeAdapter(this,
                mCursor, R.layout.row, R.layout.exprow,
                //createGroupList(), 
                new String[] { Items.KEY_BOLGEID },
                new int[] { R.id.txtItem },
                R.layout.exprow, R.layout.exprow,
                new String[] { Items.KEY_EMAIL,Items.KEY_NAME }, new int[] { R.id.dscItem, R.id.manuItem }) {

            @Override
            protected Cursor getChildrenCursor(Cursor groupCursor) {

                String tempGroup = groupCursor.getString(groupCursor
                        .getColumnIndex(Items.KEY_BOLGEID));

                DbHelper dbh = new DbHelper(BrowseActivity.this);
                SQLiteDatabase db = dbh.getWritableDatabase();

                String sqlString = "SELECT " + Items.KEY_ROWID + ", "
                        + Items.KEY_EMAIL + ", " + Items.KEY_NAME + ", "
                        + Items.KEY_KURUMID + ", " + Items.KEY_BOLGEID + ", "
                        + Items.KEY_ILID + " FROM " + Items.DATABASE_TABLE
                        + " WHERE " + Items.KEY_BOLGEID + "= "  + tempGroup 
                        ;
                Cursor mCursor = db.rawQuery(sqlString, null);

                return mCursor;

            }


        };

        browseView.setAdapter(mAdapter);

    }
我的结果应该是:

Group 1:
(db,"Asli", "asli@gmail.com", 1, 1, 1); 
(db,"Osman Can", "osman@gmail.com", 1, 1, 1); 
(db,"Abuzer Kadayif", "kadayif@gmail.com", 1, 2, 1); 
Group 2:        
(db,"Emre", "emre@gmail.com", 1, 3, 2); 
(db,"Deniz", "deniz@gmail.com", 1, 4, 2); 
Group 3:        
(db,"Simon Garfunkel", "simon@gmail.com", 1, 5, 0); 
(db,"Eric Clapton", "eric@gmail.com", 1, 6, 0); 
(db,"Neil Young", "neil@gmail.com", 1, 5, 0);
但事实确实如此 第1组3次 2次第2组 3次0组


我试图更改groupCursor的sql,但它崩溃了。

您需要更改第一条sql语句,以便只返回一次所需的组。现在,您将为每条记录获取它,因此适配器将为每条记录提供一个组。将SQL更改为:

String sqlString = SELECT DISTINCT " + Items.KEY_BOLGEID + " AS _id FROM " + Items.DATABASE_TABLE;
这将为每个要分组的项目提供一个实例(并将其设置为适配器所需的_id列)


然后在适配器调用的组部分使用
newstring[]{u id}

您还需要这方面的指导吗?我正在做类似的事情