0

コンテンツ値をデータベースにロードしようとしています。ここのコードは機能します:

private void processTable(final JsonReader tableReader, final ModelLoader loader) throws IOException
    {
        tableReader.beginArray();
        while (tableReader.hasNext()) {
            String id = loader.getIdColumnName();
            final ContentValues cv = loader.parseModel(tableReader);

            persistData(loader.getTableName(),id, cv);
        }
        tableReader.endArray();
    }

ただし、パーツを追加すると失敗します。

private void processTable(final JsonReader tableReader, final ModelLoader loader) throws IOException
    {
        tableReader.beginArray();
        while (tableReader.hasNext()) {
            String id = loader.getIdColumnName();
            final ContentValues cv = loader.parseModel(tableReader);

            if (loader.getModelType() == Filter.LOADER.getModelType())                  //Checks to see if the filter sub arrays are there
            {
                while(tableReader.hasNext()) 
                {
                    String name = "";
                    try{
                        tableReader.
                        name = tableReader.nextName();
                    } catch (Exception e) {
                    tableReader.skipValue();
                    continue;
                    }
                    if (name.equals("ImageOverlays"))
                        processTable(tableReader, mLoader.getSpecificLoader("ImageOverlays"));
                    else if (name.equals("ColorOverlays"))
                        processTable(tableReader, mLoader.getSpecificLoader("ColorOverlays"));
                }
            }

            persistData(loader.getTableName(),id, cv);
        }
        tableReader.endArray();
    }

追加コードの目的は、フィルターから特定のアイテムを取得して処理することです。このコードを使用すると、以前に使用したフィルターの値すら取得できません。

値をスキップすることは、その前に宣言したContentValuescvをどういうわけか台無しにしていると思います。助けてくれてありがとう。

4

1 に答える 1

1

したがって、内部ループが原因で、解析する必要のあるJSONオブジェクトをスキップするという問題が発生します...

そして、コメントで述べたコンテンツ値は、ループの最後に到達するまでには有効ではありません。

于 2012-07-20T17:00:09.773 に答える