2011-01-10 4 views

답변

1

입력 예 :

{"results": [{"id": "1f3d", "title": "Result title", "content": "Some content"}, ...]} 

예 번호 :

public class MyContentHandler extends JsonContentHandler { 

    private final MatrixCursor mOutput; 

    public MyContentHandler(MatrixCursor cursor) { 
     mOutput = cursor; 
    } 

    @Override 
    protected Object getContent(String source) throws JSONException { 
     JSONObject data = new JSONObject(source); 
     int columnCount = output.getColumnCount(); 
     JSONArray results = data.getJSONArray("results"); 
     for (int i = 0; i < results.length(); i++) { 
      JSONObject result = results.getJSONObject(i); 
      String id = result.getString("id"); 
      String title = result.getString("title"); 
      String content = result.getString("content"); 

      // Generate a positive integer ID for compatibility with CursorAdapter 
      Long baseId = Long.valueOf(Math.abs(id.hashCode())); 

      RowBuilder builder = output.newRow(); 
      for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) { 
       String columnName = output.getColumnName(columnIndex); 
       if (columnName.equals(MyContract.Items._ID)) { 
        builder.add(baseId); 
       } else if (columnName.equals(MyContract.Items.ID)) { 
        builder.add(id); 
       } else if (columnName.equals(MyContract.Items.TITLE)) { 
        builder.add(title); 
       } else if (columnName.equals(MyContract.Items.CONTENT)) { 
        builder.add(content); 
       } else { 
        throw new RuntimeException("Unknown column: " + columnName); 
       } 
      } 
     } 

     // Tell FeedLoader how many rows were added 
     return FeedLoader.documentInfo(results.length()); 
    } 
}