Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Android 安卓:SimpleCrsorAdapter&;列表视图_Android_Listview_Simplecursoradapter - Fatal编程技术网

Android 安卓:SimpleCrsorAdapter&;列表视图

Android 安卓:SimpleCrsorAdapter&;列表视图,android,listview,simplecursoradapter,Android,Listview,Simplecursoradapter,嗨,我开始在android(eclipse)上编程一个待办事项列表,它与Google任务同步,并从您的Google帐户添加任务。 我实现了一个非常简单的数据库(根据本教程:)。 项目包含一个活动,该活动仅实现一个listView和一个按钮,该按钮允许项目添加任务。(父活动) 单击按钮,通过“startActivityForResult”启动新的活动,您可以输入名称和类别。(子活动) 然后将这两个字符串传递给父活动并添加到数据库中,该数据库在父活动中初始化 现在,应该创建listview并设置si

嗨,我开始在android(eclipse)上编程一个待办事项列表,它与Google任务同步,并从您的Google帐户添加任务。 我实现了一个非常简单的数据库(根据本教程:)。 项目包含一个活动,该活动仅实现一个listView和一个按钮,该按钮允许项目添加任务。(父活动) 单击按钮,通过“startActivityForResult”启动新的活动,您可以输入名称和类别。(子活动) 然后将这两个字符串传递给父活动并添加到数据库中,该数据库在父活动中初始化 现在,应该创建listview并设置simpleCursorAdapter;在emulator和我的android handy上,这就是应用程序崩溃的地方。 以下是启动活动的代码片段:

 @Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    initDB();
    initUI();
}

public void initUI()
{
    Log.w(TAG, "initUI()");
    populateToDoList();

    listView = (ListView) findViewById(R.id.tasklist);
    addButton = (Button) findViewById(R.id.addTask);

    addButton.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            Intent i = new Intent(RememberMe.this, AddTask.class);
            startActivityForResult(i, REQUEST_CODE);
    }   });
}

public void initDB()
{
    toDoDBAdapter = new ToDoDBAdapter(RememberMe.this);
    toDoDBAdapter.open();
}

private void populateToDoList() 
{

    Log.w(TAG, "populateToDoList()");

    dbCursor = toDoDBAdapter.getAllToDoItemsCursor();
    Log.w(TAG, "getAllToDoItemsCursor()");

    startManagingCursor(dbCursor);
    Log.w(TAG, "startManagingCursor()");

    String [] columns = { ToDoDBAdapter.KEY_NAME};
    int [] to = { android.R.id.text1 };
    Log.w(TAG, "Sring from int to");

    simpleCursor = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, dbCursor, columns, to);
    Log.w(TAG, "new SimpleCursorAdapter()");

    listView.setAdapter(simpleCursor);
    Log.w(TAG, "setAdapter()");

    simpleCursor.notifyDataSetChanged();    

}

private void updateList() 
{

    dbCursor.requery();
    simpleCursor.notifyDataSetChanged();

}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if(resultCode == REQUEST_CODE)
    {
        String taskName = data.getStringExtra("taskName");
        String taskCategory = data.getStringExtra("taskCategory");

        toDoDBAdapter.createTask(taskName, taskCategory);

        updateList();

        Toast.makeText(this, "Aufgabe hinzugefügt", Toast.LENGTH_LONG).show();
    }
}

@Override
public void onDestroy() 
{
    super.onDestroy();
    toDoDBAdapter.close();
}
}
停在

listView.setAdapter(simpleCursor);
Log.w(TAG, "setAdapter()");
我不知道为什么或者是什么问题;我了解到64位系统上的仿真器存在问题,但代码在我的handy和implementing ListView上也不起作用,设置simpleCursor也不应该如此棘手 下面是日志:

您是否已检查以确保listView实际上不为空?调试您的代码,一步一步地升级到
listView.setAdapter(simpleCursor)
并将鼠标悬停在listView上,查看它是否为null

编辑:您确实发现它实际上是空的,以下是我发现的最常见的原因:

listView = (ListView) findViewById(R.id.tasklist);
R.id.tasklist
区分大小写,请确保在XML中它不是
@+id/tasklist
或类似内容,否则将返回null


还要确保拼写完全正确,因为这可能只是拼写错误。

尝试调试populateToList()中使用的函数的结果首先感谢您的回答,是的,您是对的,它是空的:-$ah好的,我在初始化视图之前运行populateList()。愚蠢的O.oBe一定要选中大的“复选标记”如果这是解决您问题的答案:)。它在左边。感谢您的帮助,我不会单独检查它是否为Null没有问题,这些NullPointerException通常是最容易找到的,您只需使用调试器:)。现在你知道怎么找到一个了。