我知道有關於「getView叫幾聲」這個問題上幾個問題,但我的問題是有點不同。的ListView - getView被稱爲太多時間
我有一個自定義行(使用row_layout.xml)的自定義的ListView。 它通常運作良好。在開始時,我遇到了多次調用getView的問題,並且通過使用我在此處看到的一種方法修復了此問題。 (使用'usedPositions'數組)。
現在,我在日誌中看到這種情況:getView pos 0,getView pos 1,getView pos 0,getView pos 1. 這使我的行數加倍。只有當我調用覆蓋當前活動的新活動並關閉該活動時纔會發生。 (例如,打開相機活動並關閉它)。
我會告訴我的代碼:
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row = convertView;
Toast toast = Toast.makeText(this.context, "getView " + position, 1000);
toast.show();
String pos = Integer.toString(position);
if (!usedPositions.contains(pos)) {
CardHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new CardHolder();
//holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtCouponTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.txtBusinessName = (TextView)row.findViewById(R.id.txtBusinessName);
row.setTag(holder);
}
else
{
holder = (CardHolder)row.getTag();
}
Card card = data.get(position);
holder.txtCouponTitle.setText(card.couponTitle);
holder.txtBusinessName.setText(card.businessName);
//holder.imgIcon.setImageResource(card.icon);
TableLayout table = (TableLayout)row.findViewById(R.id.imagesTable);
for (int r=1; r<=1; r++){
TableRow tr = new TableRow(this.context);
for (int c=1; c<=10; c++){
ImageView im = new ImageView (this.context);
im.setImageDrawable(this.context.getResources().getDrawable(c<= card.numberOfStamps ? R.drawable.stamp_red :R.drawable.stamp_grey));
im.setPadding(6, 0, 0, 0); //padding in each image if needed
//add here on click event etc for each image...
//...
tr.addView(im, 40,40);
}
table.addView(tr);
}
// Your code to fill the imageView object content
usedPositions.add(pos); // holds the used position
}
else
usedPositions.remove(pos);
return row;
}
你能告訴我有什麼不對?
的可能的複製[自定義列表視圖適配器getView方法被調用多次,並且在沒有連貫順序](http://stackoverflow.com/questions/2618272/custom-listview-adapter-getview-method-being-called-多時間,和在-NO-CO) – engincancan 2017-03-31 09:12:00