上下文
我想要一个包含 3 种截然不同的列表项布局的列表,因此我使我的适配器根据要显示的项目类型创建适当的 View 。
例如我想列出一些图像、文本和数字,每个都有一些标题。
我知道在
public View getView(int position, View convertView, ViewGroup parent)
convertView
代表重用不再可见的 listItems View 。
问题
我如何选择 convertView
或者我如何控制我在那里得到的内容?
问题来自不同的 listItems View ,假设我的列表以图像 listItem 开头,然后是大量文本 listItems 和数字 listItems,100 个 listItems 随后是第二张图像。
我假设在向下滚动列表时,(在 getView(...)
调用中)第一个不为 null 的 convertView
是带有图像的,因为我需要显示文本 listItem 或数字 listItem 的 View 我无法使用它。然后我猜想在接下来的每个 getView(...)
调用中,convertView
都是与之前调用相同的图像 listItem,因为我之前没有使用它。
未使用的文本 listItems 和数字 listItems 卡住了,滚动列表时我需要继续创建新 View ,这是我想要防止的。
最佳答案
试试这个,
@Override
public View getView(final int position, View convertview, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder mHolder;
if (convertview == null) {
convertview = mInflater.inflate(R.layout.list_item, null);
mHolder = new ViewHolder();
mHolder.username_Txt = (TextView) convertview
.findViewById(R.id.username_Txt);
convertview.setTag(mHolder);
} else {
mHolder = (ViewHolder) convertview.getTag();
}
try {
mHolder.username_Txt.setText("your value");
} catch (Exception e) {
// TODO: handle exception
}
return convertview;
}
private class ViewHolder {
private TextView username_Txt;
}
关于android - 我如何选择要重用的 convertview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27099455/