2014-09-30 4 views
0

Я создаю клиента ОбязательноеFragmentAdapter расширяет BaseAdapter, но я нахожу, что getview всегда вызывается, и я не знаю почему?Метод getView(), называемый временем mulite в адаптере

код GetView:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LogUtils.i("CompulsoryFragmentAdapter", "position->"+position); 
    // TODO Auto-generated method stub 
    viewHolder holder=null; 
    if(convertView==null){ 
     holder=new viewHolder(); 
     convertView=View.inflate(mSoftContext.get(), R.layout.course_list_compulsory_item, null); 
     holder.item_ImgSrc=(ImageView) convertView.findViewById(R.id.compulsory_item_icon); 
     holder.item_Title=(TextView) convertView.findViewById(R.id.compulsory_item_title); 
     holder.item_startTime=(TextView) convertView.findViewById(R.id.compulsory_item_startTime); 
     holder.item_endTime=(TextView) convertView.findViewById(R.id.compulsory_item_stopTime); 
     holder.item_residueTime=(TextView) convertView.findViewById(R.id.compulsory_item_residueTime); 
     holder.item_StudyProgress=(TextView) convertView.findViewById(R.id.compulsory_item_studyprogress); 
     holder.item_progressBar=(ProgressBar) convertView.findViewById(R.id.compulsory_item_progressbar); 
     convertView.setTag(holder); 
    }else{ 
     holder=(viewHolder) convertView.getTag(); 
    } 
    CompulsoryContentItemEntity item=indexItems.get(position); 
    int progress=(int)(CommonUtil.floatRound(item.getProgress(), 2, BigDecimal.ROUND_DOWN)*100); 
    holder.item_Title.setText(item.getName()); 
    holder.item_startTime.setText(DateUtils.datetoStr(item.getStartTime())); 
    holder.item_endTime.setText(DateUtils.datetoStr(item.getEndTime())); 
    holder.item_residueTime.setText(String.format("剩%s天", item.getIntervalDays())); 
    holder.item_progressBar.setProgress(progress); 
    holder.item_StudyProgress.setText(progress+"%"); 
    if(item.getImage().equals("")||item.getImage()==null){ 
     holder.item_ImgSrc.setImageResource(R.drawable.compulsory_item_img); 
    }else{ 

    } 
    return convertView; 
} 

private class viewHolder{ 
    ImageView item_ImgSrc; 
    TextView item_StudyProgress; 
    TextView item_Title; 
    TextView item_startTime; 
    TextView item_endTime; 
    TextView item_residueTime; 
    ProgressBar item_progressBar; 
} 

listview.xml файл:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/compulsory_bg" 
android:orientation="vertical" > 

<com.eceibs.xlistview.XListView 
    android:id="@+id/listview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:divider="@null" 
    /> 

</LinearLayout> 

элемент XML-файл:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@color/compulsory_bg" 
android:paddingBottom="4dp" 
android:paddingTop="4dp" > 

но результат:

position->0 
position->1 
position->2 
position->0 
position->1 
position->2 
position->0 
position->1 
position->2 
position->0 
position->1 
position->2 
... 

Я не трогали ListView или в другом месте, почему это показать результат, как это?

+2

Да, он будет вызывать несколько раз для отображения элемента списка listview. –

+0

Возможный дубликат http://stackoverflow.com/questions/18376708/getview-called-multiple-times-in-android – yashhy

+0

Можете ли вы опубликовать свой остальная часть адаптера. – k0sh

ответ

0

Предположим, у вас есть 5 строк в ListView, и вы можете увидеть 2 строки в то время. Поэтому, когда загружается список, вы можете видеть строки 1 и строку 2. Теперь предположим, что вы прокрутите список до конца и увидите строки 4 и строки 5. В это время андроид держит только строку 3 в памяти и строке 1 и 2 отправляются в ресайклинг. Теперь, когда вы просматриваете строки 1 и 2, метод getView снова вызывается для строк 1 и 2, а строки 4 и 5 отправляются на повторитель.

Смежные вопросы