2014-02-10 48 views
0

我知道这已在StackOverflow上多次提出,但我已经经历了一堆问题/答案,并且无法真正弄清楚我的代码出现了什么问题。这里是我的自定义适配器中的getView代码:ViewHolder + ListView Scrolling Shuffling Text

@Override public View getView(int position, View view, ViewGroup parent) { 
    ViewHolder holder; 
    if (view == null) { 
     view = LayoutInflater.from(context).inflate(R.layout.friend_list_item, parent, false); 
     holder = new ViewHolder(); 
     holder.image = (ImageView) view.findViewById(R.id.friend_pic); 
     holder.text = (TextView) view.findViewById(R.id.friend_name); 
     holder.num_classes = (TextView) view.findViewById(R.id.shared_classes);   
     holder.text.setTypeface(face); 
     holder.num_classes.setTypeface(lightface); 
     view.setTag(holder); 
    } else { 
     holder = (ViewHolder) view.getTag(); 
    } 

    // Build Shared Classes text 
    FriendDataHolder fdh = getItem(position); 

    String classesText = fdh.getClassesText();  
    if(classesText != "") holder.num_classes.setText(classesText); 

    holder.text.setText(fdh.getName()); 


    // Trigger the download of the URL asynchronously into the image view. 
    String imageUrl= "http://graph.facebook.com/" + getItemId(position) + "/picture?type=square"; 

    Picasso.with(context) 
    .load(imageUrl) 
    .placeholder(R.drawable.fb_default) 
    .into(holder.image); 

    return view; 
} 

我想不出有趣的是,无论是我的图片/名称都混合起来,但只有类文本。任何帮助,将不胜感激!

回答

1
if(classesText != "") holder.num_classes.setText(classesText);// this is the problem, 

如果u设定值说:“测试”第1项和第10项被重用的观点,如果classesText为空或null,则你不更新的价值,因此它会显示“测试“为第10个项目也有其他情况下设置为空文本或默认值

if(classesText != "") holder.num_classes.setText(classesText); else {holder.num.classes.setText("")} 
+0

哎呦,这么简单的错误,我肯定被编码太久!非常感谢,我会在10分钟的时间内过期时接受答案 – jkau

+0

@jkau好好工作 –

1

此时应更换此

if(classesText != "") holder.num_classes.setText(classesText); 

随着

if(classesText != "") {holder.num_classes.setText(classesText);} 
else {holder.num.classes.setText("")} 
0

尝试这种方式

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

      ViewHolder holder; 
      if ((view == null) || (view.getTag() == null)) { // UPDATE HERE 
       view = LayoutInflater.from(context).inflate(R.layout.friend_list_item, parent, false); 
       holder = new ViewHolder(); 
       holder.image = (ImageView) view.findViewById(R.id.friend_pic); 
       holder.text = (TextView) view.findViewById(R.id.friend_name); 
       holder.num_classes = (TextView) view.findViewById(R.id.shared_classes);   
       holder.text.setTypeface(face); 
       holder.num_classes.setTypeface(lightface); 
       view.setTag(holder); 
      } else { 
       holder = (ViewHolder) view.getTag(); 
      } 

      // Build Shared Classes text 
      FriendDataHolder fdh = getItem(position); 

      String classesText = fdh.getClassesText();  
      if(classesText != "") holder.num_classes.setText(classesText); 

      holder.text.setText(fdh.getName()); 


      // Trigger the download of the URL asynchronously into the image view. 
      String imageUrl= "http://graph.facebook.com/" + getItemId(position) + "/picture?type=square"; 

      Picasso.with(context) 
      .load(imageUrl) 
      .placeholder(R.drawable.fb_default) 
      .into(holder.image); 

      view.setTag(holder); // updata here 

      return view; 



    }