可扩展列表视图适配器getView()重复位置 [英] Expandable List View adapter getView() repeats position

查看:51
本文介绍了可扩展列表视图适配器getView()重复位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我在下面滚动时,我的ExpandableListView的适配器会重复视图"和图像"的位置.在两种情况下,我都使用不带View Holder和带View Holder的情况.

My ExpandableListView's adapter repeats the position of View and Images when I scroll below is my code. I used it without View holder and with view holder in both cases I face this issue.

public View getGroupView(int groupPosition, boolean isExpanded,
                         View convertView, ViewGroup parent) {

    View view = convertView;
    String groupName = (String) getGroup(groupPosition);

    if (view == null) {
        LayoutInflater inf = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inf.inflate(R.layout.group_item, null);
        holder = new ViewHolder();

        holder.arrowImage = (ImageView) view.findViewById(R.id.imageView1);
        setImageView(holder.arrowImage, groupPosition);
        view.setTag(holder);
        holder.groupName = (TextView) view.findViewById(R.id.laptop);
        holder.groupName.setTypeface(null, Typeface.BOLD);
        holder.groupName.setText(groupName);

    } else {
        holder = (ViewHolder) view.getTag();
        holder.groupName = (TextView) view.findViewById(R.id.laptop);
        holder.groupName.setTypeface(null, Typeface.BOLD);
        holder.groupName.setText(groupName);
    }

    return view;

}

public ImageView getImageView(int position) {
    return images[position];
}

public void setImageView(ImageView image, int position) {
    images[position] = image;
}

static class ViewHolder {
    ImageView arrowImage;
    TextView groupName;
}

推荐答案

不要按标签选择视图

使用此

public View getGroupView(int groupPosition, boolean isExpanded,
                         View convertView, ViewGroup parent) {

    View view = convertView;
    String groupName = (String) getGroup(groupPosition);

    LayoutInflater inf = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inf.inflate(R.layout.group_item, null);
        holder = new ViewHolder();

        holder.arrowImage = (ImageView) view.findViewById(R.id.imageView1);
        holder.groupName = (TextView) view.findViewById(R.id.laptop);
        holder.groupName.setTypeface(null, Typeface.BOLD);
        holder.groupName.setText(groupName);
        setImageView(holder.arrowImage, groupPosition);
        view.setTag(holder);

    return view;

}

public ImageView getImageView(int position) {
    return images[position];
}

public void setImageView(ImageView image, int position) {
    images[position] = image;
}

static class ViewHolder {
    ImageView arrowImage;
    TextView groupName;
}

这将防止图像重复并将每个视图视为新视图

this will prevent image repetition and consider every view as a new view

这篇关于可扩展列表视图适配器getView()重复位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆