2015-12-28 88 views
-2

在我的情況下,我有一個列表視圖,並在一個項目上點擊一個ImageView將出現。但是,如果我向下滾動或向上,imageview將消失。我怎樣才能「保存」視圖的狀態? 感謝ListView破壞我的變化

- 編輯 - 這是我的適配器:

public class FeedListAdapterTab2 extends BaseAdapter { 
     private Activity activity; 
     private LayoutInflater inflater; 
     private List<FeedItemAbos> feedItems; 
     com.android.volley.toolbox.ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 
     View.OnClickListener onClickListener; 

     JSONParser jsonParser = new JSONParser(); 
     FeedItemAbos item; 
     private long timestampLastClick; 
     private long doubleClickQualificationSpanInMillis; 
     private static final long DEFAULT_QUALIFICATION_SPAN = 200; 
     String quotesID; 

     TextView textViewQuotations; 

     //UNIVERSAL 
     private DisplayImageOptions options, optionsFeedImage; 
     private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener(); 

     public FeedListAdapterTab2(Activity activity, List<FeedItemAbos> feedItems, View.OnClickListener onClickListener) { 
      this.activity = activity; 
      this.feedItems = feedItems; 
      this.onClickListener = onClickListener; 

      //UNIVERSAL 
      options = new DisplayImageOptions.Builder() 
        .showImageOnLoading(R.drawable.ic_stub) 
        .showImageForEmptyUri(R.drawable.ic_empty) 
        .showImageOnFail(R.drawable.ic_error) 
        .cacheInMemory(true) 
        .cacheOnDisk(true) 
        .displayer(new CircleBitmapDisplayer(Color.WHITE, 5)) 
        .build(); 
      //UNIVERSAL 
      optionsFeedImage = new DisplayImageOptions.Builder() 
        .cacheInMemory(true) 
        .cacheOnDisk(true) 
        .build(); 
     } 

     @Override 
     public int getCount() { 
      return feedItems.size(); 
     } 

     @Override 
     public Object getItem(int location) { 
      return feedItems.get(location); 
     } 

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

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 


      if (inflater == null) 
       inflater = (LayoutInflater) activity 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      if (convertView == null) 
       convertView = inflater.inflate(R.layout.feed_item, null); 

      if (imageLoader == null) 
       imageLoader = AppController.getInstance().getImageLoader(); 


      final ImageView imageViewLike = (ImageView) convertView. 
        findViewById(R.id.imageViewLike); 

      try { 

       item = feedItems.get(position); 


        convertView.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 

          if ((SystemClock.elapsedRealtime() - timestampLastClick) < doubleClickQualificationSpanInMillis) { 
           Log.e("DOUBLE", "CLICK"); 
           timestampLastClick = 0; 
           ID = String.valueOf(v.getId()); 
          timestampLastClick = SystemClock.elapsedRealtime(); 
// 

       imageViewLike.setVisibility(View.VISIBLE); 
          Log.e("id", "nice " + v.getId()); 
         } 
        }); 
       } 



      return convertView; 
     } 

上的convertview所以列表視圖的角度來看,會出現一個ImageView的「雙龍頭」。但是如果視圖不再顯示,imageview消失。

+1

發佈您的代碼。所以每個人都很容易理解。 –

回答

1

列表適配器(ListAdapter或子類)應該保持每個項目的狀態。代表項目的視圖在不再可見時被銷燬或回收。 ListAdapter.getView()將在物品再次變爲可見時再次被調用。

+0

是的,但有沒有機會來防止這種情況?如果所有視圖均已繪製,則保存每個視圖的狀態 – fabiruu111

+0

如果您確實想保留視圖,則可以將它們用作列表項。就像你的適配器中有一個視圖數組,並返回getView()上的數組元素 – Rediska