2012-11-27 39 views
0

我在這裏非常困惑。我在創建活動時填充了一次ArrayAdapter。 它充滿了簡單的物體。在對象的參數中,有一個布爾值用於適配器的getView()方法。這是有關的部分:ArrayAdapter在滾動時丟失了一些信息

MedicalExamination object = getItem(position); //object is acquired at the begining of getView() 

if (!object.isResultAvalible()) 
    viewHolder.attachment.setVisibility(View.GONE); 

當我上下滾動列表幾次,resultAvalible布爾開始更改(?!)。沒有關於對象的其他信息發生變化,我在列表單元格中的TextView上顯示了一些字符串。 List保持原樣......除了這個布爾變量,它使我的ImageView(附件)消失。

我的bollean param是私有的,它甚至沒有設置方法。只有它的beeing集合在構造函數中。

我不知道發生了什麼,請在這方面需要一些幫助。

我的自定義適配器代碼由於請求:

private class ExaminationsAdapter extends ArrayAdapter<MedicalExamination> { 
    private int resource; 

    public ExaminationsAdapter(Context context, 
      List<MedicalExamination> objects) { 
     super(context, R.layout.examinations_list_item, objects); 
     resource = R.layout.examinations_list_item; 
    } 

    class ViewHolder { 
     public TextView examinationsNames; 
     public TextView date; 
     public ImageView attachment; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = convertView; 
     ViewHolder viewHolder; 
     MedicalExamination object = getItem(position); 

     if (view == null) { 
      LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(resource, null, true); 
      viewHolder = new ViewHolder(); 
      viewHolder.examinationsNames = (TextView) view.findViewById(R.id.examinations_item_title); 
      viewHolder.date = (TextView) view.findViewById(R.id.examinations_item_date); 
      viewHolder.attachment = (ImageView) view.findViewById(R.id.examinations_item_attachment); 

      view.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) view.getTag(); 
     } 

     if (object == null) { 
      return view; 
     } 

     viewHolder.examinationsNames.setText(object.getExaminationsNames()); 
     viewHolder.date.setText(object.getDate()); 

     if (!object.isResultAvalible()) 
      viewHolder.attachment.setVisibility(View.GONE); 

     setOnListTouchListener(view); 
     return view; 
    } 
} 
+0

您是否創建了自定義適配器?添加一些你寫的適配器的代碼。 – GamDroid

+0

發佈一些代碼。 – Atrix1987

+0

我會盡快發佈我的自定義適配器代碼。我只是將其去掉,所以它不會太長 –

回答

2

你需要採取在考慮,你可以有你的手(一個用於該視圖可以使用該行,其中隱藏一個循環視圖),因此:

if (!object.isResultAvalible()) { 
    viewHolder.attachment.setVisibility(View.GONE); 
} else { 
    // revert the image status to the default 
    viewHolder.attachment.setVisibility(View.VISIBLE); 
} 
+0

即使resultAvaible確實是false,也會使圖像始終可見 –

+1

@Xylian您是否測試過我的代碼?如果'isResultAvalible()'返回值是'false',也許你可以解釋圖像會發生什麼。根據我的理解,你在行佈局中有一個'ImageView',如果'isResultAvailable()'返回'false',它應該讓'ImageView'消失,否則'ImageView'應該是可見的。 – Luksprog

+0

原諒我,那是一個愚蠢的評論。現在看到你的觀點,讓我測試你的代碼 –