我在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/