2013-11-22 6 views
0

Я использую виджет колеса из проекта kankan. Я последовал за демо. Я внедрил пользовательский вид для колесных элементов, и после загрузки большая часть элементов колеса не отображается. Вот мой код:kankan.wheel.widget.WheelView. Отображаются пользовательские виды в arent arent arent

Мой адаптер:

public class MyAdapter implements WheelViewAdapter { 
    // Countries names 
    static class ViewHolder { 
     TextView tvUserName; 
     TextView tvcountry; 
     TextView tvAge; 
     TextView tvPlayTime; 
     ImageView imProfilePhoto; 
} 

private User[] fans; 
User fan; 
Context con; 

// Countries flags 

/** 
* Constructor 
*/ 
public MyAdapter(Context context, User[] fans) { 
     super(); 
     this.fans = fans; 
     con = context; 
     //setItemTextResource(R.id.textViewCountryV); 
} 

@Override 
public View getItem(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
    //super.getItem(poition, convertView, parent); 
    ViewHolder holder; 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) con 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.fan_roulette_item, parent, false); 
      holder = new ViewHolder(); 
      holder.imProfilePhoto = (ImageView) convertView.findViewById(R.id.ivProfilePhoto); 

      fan = this.fans[position]; 
      holder.tvcountry = (TextView) convertView.findViewById(R.id.textViewCountryV); 
      holder.tvAge = (TextView) convertView.findViewById(R.id.textViewAgeV); 
      holder.tvPlayTime = (TextView) convertView.findViewById(R.id.textViewPlayTimeV); 
      holder.tvUserName = (TextView) convertView.findViewById(R.id.textViewUserNameV); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     MainActivity.myImageLoader.DisplayImage(fans[position].imageURL, 
       holder.imProfilePhoto, true); 
     holder.tvUserName.setText(fan.username); 
     holder.tvcountry.setText(fan.country); 
     holder.tvAge.setText("" + fan.age); 
     holder.tvPlayTime.setText("" + fan.playTime); 
     return convertView; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) con 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.fan_roulette_item, parent, false); 
      holder = new ViewHolder(); 
      holder.imProfilePhoto = (ImageView) convertView.findViewById(R.id.ivProfilePhoto); 

      fan = this.fans[position]; 
      holder.tvcountry = (TextView) convertView.findViewById(R.id.textViewCountryV); 
      holder.tvAge = (TextView) convertView.findViewById(R.id.textViewAgeV); 
      holder.tvPlayTime = (TextView) convertView.findViewById(R.id.textViewPlayTimeV); 
      holder.tvUserName = (TextView) convertView.findViewById(R.id.textViewUserNameV); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     MainActivity.myImageLoader.DisplayImage(fans[position].imageURL, 
       holder.imProfilePhoto, true); 
     holder.tvUserName.setText(fan.username); 
     holder.tvcountry.setText(fan.country); 
     holder.tvAge.setText("" + fan.age); 
     holder.tvPlayTime.setText("" + fan.playTime); 
     return convertView; 
} 

    @Override 
    public int getItemsCount() { 
     return fans.length; 
    } 

    public User getCurrentItem(int currentWheelItem) { 
     return this.fans[currentWheelItem]; 
    } 

    @Override 
    public View getEmptyItem(View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void registerDataSetObserver(DataSetObserver observer) { 
     // TODO Auto-generated method stub 
    } 


    @Override 
    public void unregisterDataSetObserver(DataSetObserver observer) { 
     // TODO Auto-generated method stub 
    } 
} 

Симптомы: в начале, когда колесо загружается, иногда я могу видеть мои пользовательские элементы, а иногда нет. После прокрутки в 9 из 10 раз можно увидеть только изображение в элементе, и все остальные текстовые изображения не отображаются.

Я искал через Интернет, но не нашел решения.

ответ

0

Никто не отвечал, но я нашел решение. После нескольких часов отладки и попыток я понял, что проблема связана с размером пользовательских элементов WheelViewAdapter. ширина и высота элемента должны быть меньше, чем сам виджет колеса. шахта была больше, а затем вызвала ошибки рендеринга, которые были прозрачными (я не видел никакой ошибки в logcat)

Надеюсь, это поможет

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