我在SO和其他网站上找到了很多关于如何用Spinner填充Cursor的答案,但是它们都使用废弃的SimpleCursorAdapter(Context, int, String[], int[])构造函数来实现。似乎没有人描述如何使用API​​级别11及更高版本。

API告诉我使用LoaderManager,但是我不确定如何使用它。

最佳答案

我建议您实现自己的CursorAdapter,而不要使用SimpleCursorAdapter。

实现CursorAdapter并不比实现任何其他适配器难。
CursorAdapter扩展了BaseAdapter,并且getItem(),getItemId()方法已经为您覆盖,并返回实际值。
如果您确实支持蜂巢之前,建议使用支持库中的CursorAdapter(android.support.v4.widget.CursorAdapter)。如果您只有11岁,请使用android.widget.CursorAdapter
注意,在调用swapCursor(newCursor)时不需要调用notifyDataSetChanged()。

import android.widget.CursorAdapter;

public final class CustomAdapter
        extends CursorAdapter
{

    public CustomAdapter(Context context)
    {
        super(context, null, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
    }


    // here is where you bind the data for the view returned in newView()
    @Override
    public void bindView(View view, Context arg1, Cursor c)
    {

        //just get the data directly from the cursor to your Views.

        final TextView address = (TextView) view
                .findViewById(R.id.list_item_address);
        final TextView title = (TextView) view
                .findViewById(R.id.list_item_title);

        final String name = c.getString(c.getColumnIndex("name"));
        final String addressValue = c.getString(c.getColumnIndex("address"));

        title.setText(name);
        address.setText(addressValue);
    }

    // here is where you create a new view
    @Override
    public View newView(Context arg0, Cursor arg1, ViewGroup arg2)
    {
        return inflater.inflate(R.layout.list_item, null);
    }

}

关于android - 如何在API级别11之后用游标填充Spinner?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16414644/

10-10 19:02