从APIv.11发布开始,Android SDK就包含了also referenced from the official site的XmlAdapter示例。这个示例现在至少出现在3个文件夹中: android-11,android-12和android-13。而且它已经坏了。主要的(但不仅仅是)问题是它声明了一个无处可寻的android.content.XmlDocumentProvider提供程序,包括https://android.googlesource.com
在Adapters.java中也存在编译问题
mContext cannot be resolved to a variable line 973
mFrom cannot be resolved to a variable line 938
mTo cannot be resolved to a variable line 937
mTo cannot be resolved to a variable line 939在android-developers上与此相关的问题很少,但没有答案。有没有人设法跟踪这个难以捉摸的XmlDocumentProvider并使样本工作?最重要的是--亲爱的Android团队,你能修复这个样本或者把它拉出来吗?
发布于 2011-11-01 03:16:22
缺失的XmlDocumentProvider现在随SDK14中的示例一起发布,该项目将针对SDK8及更高版本进行编译。但是,要成功运行它,您必须修改清单以指向正确的提供者:
<provider android:name="com.example.android.xmladapters.XmlDocumentProvider"
android:authorities="xmldocument" />发布于 2012-09-19 19:54:02
除了杰夫·吉尔费尔特指出的修复AndroidManifest.xml之外,您还可以更改Adapters.java (显示错误的文件)中的代码XmlCursorAdapter类,如下所示:
/**
* Implementation of a Cursor adapter defined in XML. This class is a thin wrapper
* of a SimpleCursorAdapter. The main difference is the ability to handle CursorBinders.
*/
private static class XmlCursorAdapter extends SimpleCursorAdapter implements ManagedAdapter {
private Context mContext;
private String mUri;
private final String mSelection;
private final String[] mSelectionArgs;
private final String mSortOrder;
private final int[] mTo;
private final String[] mFrom;
private final String[] mColumns;
private final CursorBinder[] mBinders;
private AsyncTask<Void,Void,Cursor> mLoadTask;
XmlCursorAdapter(Context context, int layout, String uri, String[] from, int[] to,
String selection, String[] selectionArgs, String sortOrder,
HashMap<String, CursorBinder> binders) {
super(context, layout, null, from, to);
mContext = context;
mUri = uri;
mFrom = from;
mTo = to;
mSelection = selection;
mSelectionArgs = selectionArgs;
mSortOrder = sortOrder;
mColumns = new String[from.length + 1];
// This is mandatory in CursorAdapter
mColumns[0] = "_id";
System.arraycopy(from, 0, mColumns, 1, from.length);
CursorBinder basic = new StringBinder(context, new IdentityTransformation(context));
final int count = from.length;
mBinders = new CursorBinder[count];
for (int i = 0; i < count; i++) {
CursorBinder binder = binders.get(from[i]);
if (binder == null) binder = basic;
mBinders[i] = binder;
}
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
final int count = mTo.length;
final int[] to = mTo;
final CursorBinder[] binders = mBinders;
for (int i = 0; i < count; i++) {
final View v = view.findViewById(to[i]);
if (v != null) {
binders[i].bind(v, cursor, cursor.getColumnIndex(mFrom[i]));
}
}
}
......
......
......我从这里找到的代码中得到了答案:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.0.1_r1/com/example/android/xmladapters/Adapters.java?av=f
发布于 2011-08-24 09:00:50
我从罗曼·盖伊那里得到了答案。我昨天打开的标签现在有一个状态标签: FutureRelease,我想这意味着他们将在下一个版本中修复它。有关添加的参考资料,请单击此处的链接,链接到有关android-developers的讨论
https://stackoverflow.com/questions/7139299
复制相似问题