【问题标题】:SimpleCursorAdapter not working in MainActivitySimpleCursorAdapter 在 MainActivity 中不起作用
【发布时间】:2013-03-22 07:04:16
【问题描述】:

请告诉我我是否正确使用了 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>

【问题讨论】:

  • 我认为你的错误是 list=(ListView)findViewById(R.layout.listview) 改变它 list=(ListView)findViewById(R.id.listview)
  • @vinoth 谢谢我已经做出改变,但 SimpleCursorAdapter 仍然出现错误
  • 您通过 id 查找视图,因此您必须提供它的 id 值,例如 R.id.listviewid.try it

标签: android listview


【解决方案1】:

创建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);

【讨论】:

  • 谢谢这是错误,但我是否使用 String [] FROM 正确映射光标还有一个查询
  • @Er.NikhilAgrawal :是的,你需要使用 String [] FROM = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME),ContactsContract.CommonDataKinds.Phone.NUMBER)};
  • 这是我的最后一个问题,SimpleCursorAdapter 在 api 级别 11 中被贬低了 那么它在 11 之后是否可以在其他 api 上工作。或者如果我使用 api 级别 11 中引入的新技术,它们是否可以在以前的 api 上工作或不。使用什么可以在所有 pi 级别上工作
猜你喜欢
  • 2012-12-11
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多