Java SimpleCursorAdapter的一般用法
我正在构建一个数据库应用程序,它应该使用一种通用机制来读取数据并在listview中显示给用户。我对Android编程比较陌生 我正在使用SimpleCursorAdapter,但问题是我需要用XML设计行布局视图。但我不想这样做。原因是我想让这些东西对任何表都通用,比如SELECT*FROM。使用SimpleCursorAdapter,我需要为每个表记录创建一个LinearLayout,并将该id添加到构造函数中 我想要的是以编程方式创建LinearLayout并将该id传递给构造函数,但这不起作用。我得到了ResourceNotFoundException。尝试将TextView添加到ContentView时,这也不起作用,组件不会显示 这可能吗 谢谢, 科诺斯 编辑: 这是stacktraceJava SimpleCursorAdapter的一般用法,java,android,Java,Android,我正在构建一个数据库应用程序,它应该使用一种通用机制来读取数据并在listview中显示给用户。我对Android编程比较陌生 我正在使用SimpleCursorAdapter,但问题是我需要用XML设计行布局视图。但我不想这样做。原因是我想让这些东西对任何表都通用,比如SELECT*FROM。使用SimpleCursorAdapter,我需要为每个表记录创建一个LinearLayout,并将该id添加到构造函数中 我想要的是以编程方式创建LinearLayout并将该id传递给构造函数,但这不
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): FATAL EXCEPTION: main
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): android.content.res.Resources$NotFoundException: Resource ID #0x4
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.content.res.Resources.getValue(Resources.java:892)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.content.res.Resources.loadXmlResourceParser(Resources.java:1869)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.content.res.Resources.getLayout(Resources.java:731)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.ResourceCursorAdapter.newView(ResourceCursorAdapter.java:79)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.CursorAdapter.getView(CursorAdapter.java:182)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.AbsListView.obtainView(AbsListView.java:1427)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.ListView.measureHeightOfChildren(ListView.java:1273)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.ListView.onMeasure(ListView.java:1184)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.view.View.measure(View.java:8226)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.view.View.measure(View.java:8226)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.view.View.measure(View.java:8226)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
09-15 16:43:43.547: ERROR/AndroidRuntime(13273): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
这是密码
Cursor cur = dbAdapter.findAllRecordsByTableName(tableName);
List<String> columnList = dbAdapter.findColumnsByTableName(tableName);
String[] columns = columnList.toArray(new String[0]);
startManagingCursor(cur);
LinearLayout layout = new LinearLayout(this);
layout.setId(4);
int[] to = new int[columns.length];
int i = 5;
for (String column : columns) {
Log.d("this", "column in list :" + column);
TextView view = new TextView(this);
view.setId(i);
to[i-5] = i;
i++;
/*
this.addContentView(view, new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
*/
layout.addView(view);
}
Log.d("buildContent2", "total children "+layout.getChildCount());
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,
layout.getId(), cur, columns, to);
this.setListAdapter(mAdapter);
我知道id=4的LinearLayout在上下文中是未知的,但我如何才能使它为人所知?我是否需要将其添加到上下文中,但如何添加?这就是我缺乏安卓知识的地方……是的,这是可能的,但效率低下。后堆栈跟踪。