2013-10-05 81 views
0

我正在开发一个android 2.2的应用程序,其中我想有一个ListViewonLongClickListener方法的可能性。到目前为止,我一直在使用this example,但现在我被卡在getLoaderManager().initLoader(0, null, this);,因为我的eclipse声称它找不到该方法。我有这个:Android 2.2中的ListView

import android.app.ListActivity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.widget.SimpleCursorAdapter; 
import android.widget.TextView; 
import android.support.v4.app.LoaderManager.LoaderCallbacks; 
import android.support.v4.content.CursorLoader; 
import android.support.v4.content.Loader; 

public class SBNextends extends ListActivity implements LoaderCallbacks<Cursor>{ 

SimpleCursorAdapter adapter; 

private TextView tView; 

@Override 
protected void onCreate(Bundle b) { 
    super.onCreate(b); 
    setContentView(R.layout.sbn); 
    tView= (TextView) findViewById(R.id.sbn); 
    tView.setText(""); 
    for (int i = 0; i < MyDataLoader.getData.size(); i++) { 
     tView.append(MyDataLoader.dataListONE.get(i)); 
    } 
    String[] from = new String[MyDataLoader.dataListONE.size()]; 
      for(int i = 0; MyDataLoader.dataListONE.size()> i; i++) { 
      from[i] = MyDataLoader.dataListONE.get(i); 
      } 
    int[] toView = {android.R.id.text1}; 
    adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null, from, toView); 
    setListAdapter(adapter); 

} 

任何人有任何想法,为什么我不能使用getLoaderManager()方法?我已经导入了支持库

+0

当我在Eclipse中开始输入'LoaderM'时,关于类的所有建议都消失了,所以不知何故它找不到我认为的类 – Zuenonentu

回答

1

那么,您需要与您使用的基类保持一致:要么从兼容性套件中,要么从android.app之一。在你的情况你从android.app.ListActivity延伸,所以更换:

import android.support.v4.app.LoaderManager.LoaderCallbacks; 
import android.support.v4.content.CursorLoader; 
import android.support.v4.content.Loader; 

有:

import android.app.LoaderManager.LoaderCallbacks; 
import android.content.CursorLoader; 
import android.content.Loader; 

但在这种情况下,你没有实际运行对2.2。所以你最好坚持使用兼容性包,从FragmentActivity延伸,并制作你自己的FragmentListActivity

0

这是我如何在v4应用程序上使用LoaderCallbacks。

而不是使用ListActivity,请使用FragmentActivity。在这种情况下,您必须通过findViewById实例化您的ListView,因为它不会自动实例化您的ListView。

public class MainActivity extends FragmentActivity implements LoaderCallbacks<Cursor>{ 

    SimpleCursorAdapter mAdapter; 
    ListView listView ; 

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

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


     String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME}; 
     int[] toViews = {android.R.id.text1}; // The TextView in simple_list_item_1 

     // Create an empty adapter we will use to display the loaded data. 
     // We pass null for the cursor, then update it in onLoadFinished() 
     mAdapter = new SimpleCursorAdapter(this, 
       android.R.layout.simple_list_item_1, null, 
       fromColumns, toViews, 0); 
     listView.setAdapter(mAdapter); 

     // Prepare the loader. Either re-connect with an existing one, 
     // or start a new one. 
     getSupportLoaderManager().initLoader(0, null, this); 

    }