2013-03-22 3 views
0

И, пожалуйста, скажите мне, что я правильно использую String [] FROM для отображения курсора.SimpleCursorAdapter не работает в MainActivity

Когда я использую SimpleCursorAdapter в моем OnCreate метод MainActivity он дает ошибки

Метод SimpleCursorAdapter (MainActivity, INT, Cursor, String [], Int []) не определено для типа MainActivity

Я проверил конструктор в 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> 
+1

Я думаю, ваша ошибка список = (ListView) findViewById (R.layout.listview) изменить это список = (ListView) findViewById (R.id.listview) – vinoth

+0

@vinoth Спасибо У меня есть внесено изменение, но все же ошибка пришла для SimpleCursorAdapter –

+0

, вы находите представление по id, поэтому вам нужно указать его значение id, например R.id.listviewid.try it – vinoth

ответ

3

создать SimpleCursorAdapter объект как:

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

вы забыли использовать new для создания объекта SimpleCursorAdapter

и использовать идентификатор ListView для инициализации list вместо R.layout.listview

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

Спасибо, что это ошибка, но еще один запрос я использую String [] FROM правильно отобразить курсор –

+0

@ Er.NikhilAgrawal: да вам нужно использовать 'String [] FROM = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME), ContactsContract.CommonDataKinds.Phone.NUMBER)};' –

+0

Это мой последний квест n SimpleCursorAdapter лишается уровня api 11. Так будет ли он работать с другим apis после 11. или если я использую новые методы, введенные на уровне 11 api, они будут работать над предыдущим apis или нет. Что использовать, который может работать на всех уровнях pi –

Смежные вопросы