>我有一个稀疏的值数组,我想在微调器中填充这些值,当选择该项时,我想获取id(这是稀疏数组中的键)。
从稀疏数组创建适配器的首选方法是什么?
是否可以对现有的适配器(如 BaseAdapter 或 ListAdapter )进行子类化,以便项目将具有来自稀疏数组的键作为项目 ID?
不知道如何实现上述目标,我正在考虑创建一个简单的 ArrayAdapter 实例,并从 SparseArray 中为其提供值作为源,并在选择该项目时,按值查找键,我认为这将没有效率。
创建BaseAdapter
的子类应该可以正常工作。 例如,采取
public abstract class SparseArrayAdapter<E> extends BaseAdapter {
private SparseArray<E> mData;
public void setData(SparseArray<E> data) {
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public E getItem(int position) {
return mData.valueAt(position);
}
@Override
public long getItemId(int position) {
return mData.keyAt(position);
}
}
并扩展该功能以获得一些实际功能。例如,像
public class SparseStringsAdapter extends SparseArrayAdapter<String> {
private final LayoutInflater mInflater;
public SparseStringsAdapter(Context context, SparseArray<String> data) {
mInflater = LayoutInflater.from(context);
setData(data);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView result = (TextView) convertView;
if (result == null) {
result = (TextView) mInflater.inflate(android.R.layout.simple_list_item_1, null);
}
result.setText(getItem(position));
return result;
}
}