我正在尝试显示蓝牙设备列表ArrayAdapter
,并且想要覆盖适配器的默认功能以显示对象toString()
。我知道有一些解决方案可以扩展getView(...)
方法,但我真的觉得这太复杂了。我想要的只是覆盖要显示的字符串的构建方式。对于蓝牙设备,这将使用getName()
代替toString()
.
所以我创建了一个如下所示的自定义数组适配器,并且理想情况下有一个类似以下的方法getDisplayString(T value)
public class MyArrayAdapter extends ArrayAdapter<BluetoothDevice> {
...
@Override //I wish something like this existed
protected String getDisplayString(BluetoothDevice b) {
return b.getName();
}
...
}
改变行为getView
不必那么复杂。
mAdapter = new ArrayAdapter<MyType>(this, R.layout.listitem, new ArrayList<MyType>()) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
// Replace text with my own
view.setText(getItem(position).getName());
return view;
}
};
这样做的缺点是需要两次设置视图文本(一次在super.getView
一旦进入上面的覆盖),但这并不会花费太多。另一种方法是使用充气器自行创建视图,如果convertView
不在那里。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)