在GridView的形象改变在Android中滚动自己的位置 [英] Images in gridview change their position on scrolling in android
本文介绍了在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屋!
查看全文