Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SimpleCursorAdapter的一般用法_Java_Android - Fatal编程技术网

Java SimpleCursorAdapter的一般用法

Java SimpleCursorAdapter的一般用法,java,android,Java,Android,我正在构建一个数据库应用程序,它应该使用一种通用机制来读取数据并在listview中显示给用户。我对Android编程比较陌生 我正在使用SimpleCursorAdapter,但问题是我需要用XML设计行布局视图。但我不想这样做。原因是我想让这些东西对任何表都通用,比如SELECT*FROM。使用SimpleCursorAdapter,我需要为每个表记录创建一个LinearLayout,并将该id添加到构造函数中 我想要的是以编程方式创建LinearLayout并将该id传递给构造函数,但这不

我正在构建一个数据库应用程序,它应该使用一种通用机制来读取数据并在listview中显示给用户。我对Android编程比较陌生

我正在使用SimpleCursorAdapter,但问题是我需要用XML设计行布局视图。但我不想这样做。原因是我想让这些东西对任何表都通用,比如SELECT*FROM。使用SimpleCursorAdapter,我需要为每个表记录创建一个LinearLayout,并将该id添加到构造函数中

我想要的是以编程方式创建LinearLayout并将该id传递给构造函数,但这不起作用。我得到了ResourceNotFoundException。尝试将TextView添加到ContentView时,这也不起作用,组件不会显示

这可能吗

谢谢, 科诺斯

编辑:

这是stacktrace

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在上下文中是未知的,但我如何才能使它为人所知?我是否需要将其添加到上下文中,但如何添加?这就是我缺乏安卓知识的地方……

是的,这是可能的,但效率低下。后堆栈跟踪。