0

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

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()有人对我为什么不能使用该方法有任何想法吗?我已经导入了支持库

4

2 回答 2

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.

于 2013-10-05T23:27:06.410 回答
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);

    }
于 2013-10-06T02:33:18.497 回答