在GridView的形象改变在Android中滚动自己的位置 [英] Images in gridview change their position on scrolling in android

查看:147
本文介绍了在GridView的形象改变在Android中滚动自己的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图填补我的的GridView 一些 TextViews Imageviews 。我做到了成功,但是当我在网格中向下滚动,图像改变自己现在的位置。我已阅读有关同一问题的一些其他问题;像这样的<一个href=\"http://stackoverflow.com/questions/6055730/gridview-elements-changes-their-place-dynamically-when-scroll-screen\">question,但它并没有帮助我。

Aadapter

 公共类ItemListBaseAdapter延伸BaseAdapter {私有静态的ArrayList&LT; ItemDetails&GT; itemDetailsrrayList;私人LayoutInflater l_Inflater;私人上下文的背景下;//私人OnClickListener听者;公共ItemListBaseAdapter(上下文的背景下,ArrayList的&LT; ItemDetails&GT;业绩){
    itemDetailsrrayList =结果;
    l_Inflater = LayoutInflater.from(上下文);
    this.context =背景;
}公众诠释的getCount(){
    返回itemDetailsrrayList.size();
}公共对象的getItem(INT位置){
    返回itemDetailsrrayList.get(位置);
}众长getItemId(INT位置){
    返回的位置;
}公共查看getView(INT位置,查看convertView,父母的ViewGroup){
    ViewHolder持有人;
    如果(convertView == NULL){
        convertView = l_Inflater.inflate(R.layout.activity_gridview_items,
                空值);
    持有人=新ViewHolder();
    convertView.setTag(保持器);
    }其他{
        支架=(ViewHolder)convertView.getTag();
    }    holder.txt_itemName =(TextView中)convertView
            .findViewById(R.id.tv_item_title);
    holder.txt_itemDescription =(TextView中)convertView
            .findViewById(R.id.tv_item_detail);
    holder.txt_itemPrice =(TextView中)convertView
            .findViewById(R.id.tv_item_price);
    holder.itemImage =(ImageView的)convertView
            .findViewById(R.id.iv_item_image);
    holder.txt_itemName
            .setText(itemDetailsrrayList.get(位置).getName());
    holder.txt_itemDescription.setText(itemDetailsrrayList.get(位置)
            .getItemDescription());
    holder.txt_itemPrice.setText(RS
            + itemDetailsrrayList.get(位置).getPrice());
     holder.itemImage.setImageBitmap(itemDetailsrrayList.get(位置)
     .getImage());    返回convertView;
}静态类ViewHolder {
    TextView的txt_itemName;
    TextView的txt_itemDescription;
    TextView的txt_itemPrice;
    ImageView的itemImage;
    按钮likeBtn;
    按钮addBtn;
  }
}


解决方案

您需要调用 findViewById convertView == NULL

 如果(convertView == NULL){
    convertView = l_Inflater.inflate(R.layout.activity_gridview_items,父母,假);
    持有人=新ViewHolder();    holder.txt_itemName =(TextView中)convertView
        .findViewById(R.id.tv_item_title);
    holder.txt_itemDescription =(TextView中)convertView
        .findViewById(R.id.tv_item_detail);
    holder.txt_itemPrice =(TextView中)convertView
        .findViewById(R.id.tv_item_price);
    holder.itemImage =(ImageView的)convertView
        .findViewById(R.id.iv_item_image);    convertView.setTag(保持器);
}其他{
    支架=(ViewHolder)convertView.getTag();
}

I am trying to fill my Gridview with some TextViews and Imageviews. I did it successfully, but when I scroll down in the grid, the images change their postion. I have read some other questions related to the same issue; like this one question, but it did not help me.

Aadapter

public class ItemListBaseAdapter extends BaseAdapter {

private static ArrayList<ItemDetails> itemDetailsrrayList;

private LayoutInflater l_Inflater;

private Context context;

// private OnClickListener listner;

public ItemListBaseAdapter(Context context, ArrayList<ItemDetails> results) {
    itemDetailsrrayList = results;
    l_Inflater = LayoutInflater.from(context);
    this.context = context;
}

public int getCount() {
    return itemDetailsrrayList.size();
}

public Object getItem(int position) {
    return itemDetailsrrayList.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = l_Inflater.inflate(R.layout.activity_gridview_items,
                null);
    holder = new ViewHolder();
    convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }       

    holder.txt_itemName = (TextView) convertView
            .findViewById(R.id.tv_item_title);
    holder.txt_itemDescription = (TextView) convertView
            .findViewById(R.id.tv_item_detail);
    holder.txt_itemPrice = (TextView) convertView
            .findViewById(R.id.tv_item_price);
    holder.itemImage = (ImageView) convertView
            .findViewById(R.id.iv_item_image);
    holder.txt_itemName
            .setText(itemDetailsrrayList.get(position).getName());
    holder.txt_itemDescription.setText(itemDetailsrrayList.get(position)
            .getItemDescription());
    holder.txt_itemPrice.setText("Rs "
            + itemDetailsrrayList.get(position).getPrice());
     holder.itemImage.setImageBitmap(itemDetailsrrayList.get(position)
     .getImage());

    return convertView;
}

static class ViewHolder {
    TextView txt_itemName;
    TextView txt_itemDescription;
    TextView txt_itemPrice;
    ImageView itemImage;
    Button likeBtn;
    Button addBtn;
  }
}

解决方案

You need to call findViewById when convertView == null.

if (convertView == null) {
    convertView = l_Inflater.inflate(R.layout.activity_gridview_items, parent, false);
    holder = new ViewHolder();

    holder.txt_itemName = (TextView) convertView
        .findViewById(R.id.tv_item_title);
    holder.txt_itemDescription = (TextView) convertView
        .findViewById(R.id.tv_item_detail);
    holder.txt_itemPrice = (TextView) convertView
        .findViewById(R.id.tv_item_price);
    holder.itemImage = (ImageView) convertView
        .findViewById(R.id.iv_item_image);

    convertView.setTag(holder);
} else {
    holder = (ViewHolder) convertView.getTag();
}       

这篇关于在GridView的形象改变在Android中滚动自己的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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