java - 安卓 : How to create a jagged array dynamically taking values from the database

标签 java android listview jagged-arrays sectionheader

我正在使用Android Amazing ListView创建带有粘性标题的自定义 ListView。在此库中,数据在 Data.java 类中设置。我需要做的是,我必须传递标题的值并从我在本地创建的数据库中列出标题的数据。我可以设置标题,但是,我无法根据这些标题传递列表数据。正在填充的列表数据以以下格式传递:

Composer[][] composerss = {
                    {
                        new Composer("Thomas Tallis"),
                        new Composer("Josquin Des Prez"),
                        new Composer("Pierre de La Rue"),
                    },
                    {
                        new Composer("Johann Sebastian Bach"),
                        new Composer("George Frideric Handel"),
                        new Composer("Antonio Vivaldi"),
                        new Composer("George Philipp Telemann"),
                    },
                     {
                        new Composer("Franz Joseph Haydn"),
                        new Composer("Wolfgang Amadeus Mozart"),
                        new Composer("Barbara of Portugal"),
                        new Composer("Frederick the Great"),
                        new Composer("John Stanley"),
                        new Composer("Luise Adelgunda Gottsched"),
                        new Composer("Johann Ludwig Krebs"),
                        new Composer("Carl Philipp Emanuel Bach"),
                        new Composer("Christoph Willibald Gluck"),
                        new Composer("Gottfried August Homilius"),
                    },
                    {
                        new Composer("Ludwig van Beethoven"),
                        new Composer("Fernando Sor"),
                        new Composer("Johann Strauss I"),
                    },
                    {
                        new Composer("Ludwig van Beethoven"),
                        new Composer("Fernando Sor"),
                        new Composer("Johann Strauss I"),
                    },
            };

我需要知道,如何根据从数据库检索的数据创建这样的锯齿状数组。我可以根据标题获取数据,但我需要以这种格式传递它,以便相应地排列标题下的数据。希望尽快得到帮助。

最佳答案

要从数据库获取值并创建锯齿状数组,您可以执行如下操作:

获取一个 ArrayList 并将所有索引存储在其中。

for(int i = 0; i<myIndexList.size(); i++)
{
    String[] s = null;
    Log.e("", "current pos "+i);
    Cursor mCur2 = mDb.sGetMySectionListData(myIndexList.get(i));
    if(mCur2.getCount()>0)
        {
            s = new String[mCur2.getCount()];
            mCur2.moveToFirst();
            do
                {
                    s[mCur2.getPosition()] = mCur2.getString(mCur2.getColumnIndex("section_data")));
                }
            while(mCur2.moveToNext());
        }
    mCur2.close();
    mGenerateString(s, i, myIndexList.size());
}

然后你可以使用下面的方法生成锯齿状数组

private void mGenerateString(String[] mCurrString, int pos, int size)
{
    mStr[pos] = mCurrString;
    Log.e("", "string array : "+mStr[pos]);
}

关于java - 安卓 : How to create a jagged array dynamically taking values from the database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20535657/

相关文章:

java - Hibernate 多对多 XML 映射中的重复行

android - 将多个搜索栏限制为最多 100%

java - 即使应用程序关闭,Android 也会每天发送通知

java - 行中的 ImageView 背景

Android - 在 HTTP 请求之前刷新 ListView

java - 使用 java azure 存储客户端将 block 放入 blob 中

java - 如何使用 Ant 创建 postgresql 数据库?

java - 在 Javax(在 JEE 下)上通过 Swagger 生成 API 文档?

android - 从 .bat 调用 Gradle 导致批处理执行停止

android - 按日期排序 ListView Android