2012-09-19 55 views
2

我被困在這個好幾個小時,我試圖爲我的ListView中的第一個列表項目設置圖像,但其他列表項目中的一些ImageViews也在改變。更新一個ListView中的ImageView

public class MyAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 
    public ArrayList<ListItem> myItems = new ArrayList<ListItem>(); 

    Player[] players; 

    public MyAdapter() { 
     DataBase banco = new DataBase(ScoreBoard.this); 
     players = banco.consultaJogadores(); 
     mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     for (int i = 0; players[i] != null; i++) { 
      ListItem listItem = new ListItem(); 
      listItem.caption = players[i].getName(); 
      myItems.add(listItem); 
     } 
     notifyDataSetChanged(); 
    } 

    public int getCount() { 
     return myItems.size(); 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

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

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = mInflater.inflate(R.layout.topplayer, null);  
      holder.textView = (TextView) convertView.findViewById(R.id.topPlayerTextView); 
      holder.imageview = (ImageView) convertView.findViewById(R.id.topPlayerImageView); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     }   
     holder.textView.setText(position + " " + players[position].getName() + " " + players[position].getScore()); 
     if (position == 0) { 
      holder.imageview.setImageResource(R.drawable.ball); 
     } 
     return convertView; 
    } 
} 

class ViewHolder { 
    TextView textView; 
    ImageView imageview; 
} 

class ListItem { 
    String caption; 
} 

我想改變列表中第一位玩家的圖像。 索引0,1,4,6,8,9,11,13和14處的玩家得到更新,它不遵循邏輯順序。 當我滾動時,圖像再次變化。

感謝

回答

3

您正在回收的觀點,因此,當你不希望listItems中的圖像進行設置,你必須明確地去設置它:

if (position == 0) { 
    holder.imageview.setImageResource(R.drawable.ball); 
} else { 
    holder.imageview.setImageDrawable(null); 
} 

(否則會只記得圖像,這是設置從上次該視圖((即convertView))被使用!

+0

謝謝你。你不能設置null ImageResource,但我試過這個:holder.imageview.setImageResource(R.drawable.blank); 我會做出更好的東西啦te和我iwll從ViewHolder中刪除圖像viw。 所以,再次感謝你,救了我! – user1684024

+0

'setImageDrawable',或者是使用透明圖像資源 – Blundell

+0

哦,是的,使用透明的圖像是更好 ,但我會嘗試刪除的ImageView – user1684024