2011-05-16 82 views
0

我有一個問題。目前我使用Lazyloading使用ArrayList將圖像和數據加載到我的列表視圖中。但它只顯示數組列表的最後一項。Listview只顯示arraylist的最後一項

下面是惰性加載適配器類:

public class LazyAdapter extends BaseAdapter { 

private Activity activity; 
private ArrayList<Hashtable<String,String>> data; 
private static LayoutInflater inflater=null; 
public ImageLoader imageLoader; 

public LazyAdapter(Activity a, ArrayList<Hashtable<String,String>> d) { 
    activity = a; 
    data=d; 
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    imageLoader=new ImageLoader(activity.getApplicationContext()); 
} 

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

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

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

public static class ViewHolder{ 
    public TextView title; 
    public TextView author; 
    public TextView format; 
    public TextView call_number; 
    public ImageView cover_image; 

    public Button next; 
    public Button previous; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi=convertView; 
    ViewHolder holder; 
    if (convertView == null){ 
     vi = inflater.inflate(R.layout.search_result_display_list , null); 
     holder=new ViewHolder(); 

     holder.next = (Button) vi.findViewById(R.id.next); 
     holder.previous = (Button) vi.findViewById(R.id.previous); 

     holder.title = (TextView) vi.findViewById(R.id.item_title); 
     holder.author = (TextView) vi.findViewById(R.id.item_author); 
     holder.format = (TextView) vi.findViewById(R.id.item_format); 
     holder.call_number = (TextView) vi.findViewById(R.id.item_call_number); 
     holder.cover_image=(ImageView) vi.findViewById(R.id.cover_image); 
     vi.setTag(holder); 
    } 
    else { 
     holder=(ViewHolder)vi.getTag(); 
     vi = convertView; 
    } 

    for(int i = 0; i < getCount(); i++) { 
     holder.title.setText(data.get(i).get("title")); 
     holder.author.setText(data.get(i).get("author")); 
     holder.format.setText(data.get(i).get("format")); 
     holder.call_number.setText(data.get(i).get("callNumber")); 
     holder.cover_image.setTag(data.get(i).get("coverImage")); 
     imageLoader.DisplayImage(data.get(i).get("coverImage"), activity, holder.cover_image); 
    } 
    return vi; 
} 

我想,這個問題實際上可能是與我的for循環。無限生成的地方。但是我不知道我在輸入這段代碼的過程中出了什麼問題。請幫忙。

回答

4

data.get(i)使用position

+0

天哪for循環,並取代我的刪除。有用!幾個小時一直盯着這個錯誤,我甚至沒有想到使用位置!哈哈。謝謝!!!! – 2011-05-16 06:47:40

+0

驚人!!!!!!!! – 2016-03-17 11:07:14