SimpleCursorAdapter无法在MainActivity中使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SimpleCursorAdapter无法在MainActivity中使用相关的知识,希望对你有一定的参考价值。

请告诉我我正确使用String [] FROM来映射光标。

当我在MainActivity的oncreate方法中使用SimpleCursorAdapter时,它给出了错误

对于MainActivity类型,SimpleCursorAdapter(MainActivity,int,Cursor,String [],int [])方法未定义

我已经检查了api文档中的构造函数,根据我正确使用它

public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)**

这是我的MainActivity.java:

package com.example.listview;

import android.os.Bundle;
import android.provider.ContactsContract;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;

import android.util.Log;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class MainActivity extends Activity {

    private ListView list;  
    private Cursor cursor;
    private SimpleCursorAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);

        list = (ListView) findViewById(R.layout.listview);      

        cursor = getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
                null, null);

         String [] FROM = {cursor
            .getString(cursor
                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)), cursor
                    .getString(cursor
                            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))};

         int [] TO = {android.R.id.text1, android.R.id.text2};

        adapter = SimpleCursorAdapter(MainActivity.this, android.R.layout.two_line_list_item,cursor,FROM,TO);

        list.setAdapter(adapter);
    }

}

这是我的布局listview.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </ListView>

</LinearLayout>
答案

创建SimpleCursorAdapter对象为:

adapter =new  SimpleCursorAdapter(MainActivity.this, 
         ^^^       android.R.layout.two_line_list_item,cursor,FROM,TO);

你忘记使用new创建SimpleCursorAdapter的对象

并使用ListView id初始化list而不是R.layout.listview

list= (ListView) findViewById(R.id.listview);

以上是关于SimpleCursorAdapter无法在MainActivity中使用的主要内容,如果未能解决你的问题,请参考以下文章

SimpleCursorAdapter 在 bindView 上重复单击操作

在 SimpleCursorAdapter 上使用 notifyDataSetChanged 不起作用

使用 EditText 过滤 SimpleCursorAdapter 支持的 ListView

使用 SimpleCursorAdapter 基于 sqlite 查询更新列表视图

更新 SimpleCursorAdapter,同时保持 ListView 中的滚动位置

具有 ListView 可见性的 SimpleCursorAdapter