2012-12-10 43 views
0

我使用自定义列表视图(其中有一个图像和文本框作为布局),所有的数据都从类对象和图像形式的web检索,所有的东西是绝对正常运行唯一的事情是,在模拟器列表视图不显示任何异常行为,但是当我部署它在设备上,列表视图不滚动,因为它应该做的。它只是为了一点点和背景整个列表视图的图像消失,然后在滚动结束时出现。我应该在这里做什么是调用和填充列表视图数据的代码。android listview停止滚动背景图像的第二个

public void item_display(){ 
    String[] separated = eventIDForList.split(","); 
    final List_class ObjListClass[] = new List_class[separated.length]; 
    for(int i=0;i<separated.length;i++){ 
     String temp=separated[i]; 
     eventIdVal=Integer.parseInt(temp); 
     Log.d("events id for displaying id",eventIdVal+""); 
     ObjListClass[i]=new List_class(); 
     ObjListClass[i]=new List_class(FBEvents.getInstance().object_info.get(eventIdVal).fbEventId,FBEvents.getInstance().object_info.get(eventIdVal).fbPic,"Title: "+FBEvents.getInstance().object_info.get(eventIdVal).fbName,"desc :"+FBEvents.getInstance().object_info.get(eventIdVal).fbDescription,"location :"+FBEvents.getInstance().object_info.get(eventIdVal).fbLocation,FBEvents.getInstance().object_info.get(eventIdVal).fbAttending_count); 

    } 
    List_class_adapter adapter = new List_class_adapter(this, 
      R.layout.listview_item_row, ObjListClass); 
    listView1 = (ListView)findViewById(R.id.listView2); 

    listView1.setAdapter(adapter); 

    // View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null); 
    // listView1.addHeaderView(header); 
    // listView1.setAdapter(adapter); 
    listView1.setOnItemClickListener(new OnItemClickListener() 
    { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long duration) 
      { 

      Log.d("position val",position+""); 
      eventIdForDetails=ObjListClass[position].eventId; 
      Log.d("String val",eventIdForDetails); 
      eventdetails(view); 

      } 
    }); 

这里是清单

public class List_class_adapter extends ArrayAdapter<List_class>{ 

Context context; 
int layoutResourceId; 
List_class data[] = null; 

public List_class_adapter(Context context, int layoutResourceId, List_class[] data) { 
    super(context, layoutResourceId, data); 
    this.layoutResourceId = layoutResourceId; 
    this.context = context; 
    this.data = data; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    ListHolder holder = null; 

    if(row == null) 
    { 
     LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent, false); 

     holder = new ListHolder(); 
     holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon); 
     holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle); 
     holder.txtTitle2 = (TextView)row.findViewById(R.id.txtTitle2); 
     holder.txtTitle3 = (TextView)row.findViewById(R.id.txtTitle3); 
     holder.txtTitle4 = (TextView)row.findViewById(R.id.txtTitle4); 

     row.setTag(holder); 

    } 
    else 
    { 
     holder = (ListHolder)row.getTag(); 
    } 

    List_class list_class = data[position]; 
    String url = list_class.pic;   
    Drawable image =ImageOperations(this,url); 
    holder.txtTitle.setText(list_class.title); 
    holder.imgIcon.setImageDrawable(image); 
    holder.txtTitle2.setText(list_class.description); 
    holder.txtTitle3.setText(list_class.startdate); 
    holder.txtTitle4.setText(list_class.attending_count); 

    return row; 
} 

static class ListHolder 
{ 
    ImageView imgIcon; 
    TextView txtTitle; 
    TextView txtTitle2; 
    TextView txtTitle3; 
    TextView txtTitle4; 


} 




public Object fetch(String address) throws MalformedURLException, 
IOException { 
    URL url = new URL(address); 
    Object content = url.getContent(); 
    return content; 
} 

private Drawable ImageOperations(List_class_adapter list_class_adapter, String url) { 
    try { 
     InputStream is = (InputStream) this.fetch(url); 
     Drawable d = Drawable.createFromStream(is, "src"); 
     return d; 
    } catch (MalformedURLException e) { 
     return null; 
    } catch (IOException e) { 
     return null; 
    } 
} 

}

亲切指导我,如果你知道我错了,

感谢GOOD回复

+0

究竟发生了什么?你的listView背景是黑色的? –

+0

没有它的白色或你可以用它定义的颜色,但是当我开始滚动时,背景消失,只要我滚动> –

+1

请参阅Ajmal Salims的答案。在getView()方法中下载和创建图像就像乞求糟糕的性能一样。这应该是异步完成的,你也应该实现某种缓存。 – Ole

回答

1

我适配器认为你应该使用ThreadAsyncTask。这将避免延迟并在另一个后台运行。Thread