2011-05-16 6 views
0

У меня проблема. В настоящее время я использую Lazyloading для загрузки изображений и данных в свой список, используя arraylist. Однако он отображает только последний элемент массива.Listview отображает только последний элемент arraylist

Ниже класс LazyLoading адаптер:

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; 
} 

Я думаю, что проблема может быть на самом деле с моей для петли. Там, где он создается бесконечно. Но я не знаю, где я ошибся, набрав этот код. Пожалуйста помоги.

ответ

4

Удалите цикл и вместо I в data.get(i) использования position

+0

О мой бог. Оно работает! Я смотрел на эту ошибку часами, и я даже не думал об использовании позиции! Ха-ха. Благодаря!!!! –

+0

потрясающий !!!!!!!! –

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