RelativeLayout导致Listview延迟

时间:2014-02-19 04:33:45

标签: java android android-layout memory-management

为了确保RelativeLayout导致我更换它的滞后将是一个简单的布局,然后没有经验滞后。

我正在使用cardslib

我在rel布局 2级层次结构上没有嵌套布局,但是当我使用它时仍然会遇到滞后。是否有任何选项搞乱或优先选项搞砸了?

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="30dip">

     <!--  This is the base Inner View inside a CardHeader.
         You can customize it with your layout xml file and your CardHeader.
         You can popolate your elements with CardHeader#setupInnerViewElements(android.view.ViewGroup, android.view.View) method
    -->


<TextView
        android:id="@+id/textView6"
        android:layout_width="fill_parent"
        android:textColor="@color/card_activated"
        android:layout_height="3dip"
        android:layout_below="@+id/card_header_inner_simple_title"
        android:layout_centerHorizontal="true"
        android:background="@color/card_activated"
        android:layout_margin="10dip"/>


  <ImageView
        android:id="@+id/imageDisplay"
        android:layout_width="120dip"
        android:layout_height="120dip"
        android:layout_alignLeft="@+id/textView6"
        android:layout_alignTop="@+id/textView6"
        android:layout_marginTop="46dp"
        android:layout_marginLeft="46dp"
        android:adjustViewBounds="true"
        android:src="@drawable/content_picture" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_margin="20dip"
         android:entries="@array/quanitiy"
        android:layout_alignTop="@+id/textView2"
        android:layout_toRightOf="@+id/imageDisplay" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="fill_parent"
        android:textColor="@color/card_activated"
        android:layout_height="2dip"
        android:layout_below="@+id/spinner1"
        android:layout_centerHorizontal="true"
        android:background="@color/card_activated"
        android:layout_margin="10dip"
         />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/card_header_inner_simple_title"
        android:layout_below="@+id/autoCompleteTextView1"
        android:layout_marginTop="10dip"
        android:layout_marginLeft="20dip"
        android:textSize="20sp"
        android:textStyle="bold"
        android:text="Total" />

    <ImageView
        android:id="@+id/cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView6"
        android:layout_below="@+id/textView6"
        android:src="@drawable/cancel" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageDisplay"
        android:layout_marginBottom="23dp"
        android:layout_marginLeft="10dip"
        android:layout_marginTop="10dip"
        android:layout_toRightOf="@+id/imageDisplay"
        android:text="$ 10"
        android:textColor="@color/light_green"
        android:textSize="20sp"
        android:textStyle="bold" />

     <ImageView
        android:id="@+id/checkout2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dip"
        android:layout_below="@+id/textView4"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:adjustViewBounds="true"
        android:layout_gravity="center"
        android:src="@drawable/checkout" />

     <AutoCompleteTextView
         android:id="@+id/autoCompleteTextView1"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_alignRight="@+id/card_header_inner_simple_title"
         android:layout_below="@+id/textView3"
         android:alpha=".4"
         android:ems="9"
         android:focusable="false"
         android:gravity="center"
         android:text="Add optional note to chef"
         android:textColor="@color/abs__background_holo_dark"
         android:textStyle="italic" >

         <requestFocus />
     </AutoCompleteTextView>

     <TextView
         android:id="@+id/textView1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignLeft="@+id/textView2"
         android:layout_alignTop="@+id/imageDisplay"
         android:gravity="center_vertical"
         android:text="Red Horse"
         android:textSize="20sp"
         android:textStyle="bold" />

     <TextView
         android:id="@+id/subtotal"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_above="@+id/checkout2"
         android:layout_toLeftOf="@+id/cancel"
         android:gravity="center"
         android:text="$ 10"
         android:textSize="20sp"
         android:textStyle="bold" />

</RelativeLayout>

更新

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

    Viewholder v = new Viewholder();
    View rowView = convertView;

    if(!imageLoader.isInited()){

        imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity())); 

    }

    if(rowView == null){
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         rowView = inflater.inflate(R.layout.inner_base_header_cutom, null);
         v.img = (ImageView)rowView.findViewById(R.id.imageDisplay);
         v.remove = (ImageView)rowView.findViewById(R.id.cancel);


         //Viewholder viewHolder = new Viewholder();

         rowView.setTag( v);
    }
    else{
        v = (Viewholder) rowView.getTag();
    }


     if(v.img!=null && imageLoader != null){
            imageLoader.displayImage("http://assets.bigdealsmedia.net/images/13407.jpg",  v.img, options);   

     }
     v.remove.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


            remove(list.get(position));

            //adapter.notifyDataSetChanged();


            //

        }
    });


    return rowView;
  }

2 个答案:

答案 0 :(得分:2)

这可能不是项目,检查你的listview宽度/高度,他们都应该设置为match_parent。将listview width设置为wrap_content会导致渲染时间缩短。

您通常希望避免在任何xml布局上使用wrap_content。尝试将父元素的宽度和高度设置为match_parent,对于某些子视图,您可以至少将宽度设置为match_parent。

也可以从适配器发布一些getView()代码。

同时改变你的通货膨胀

 rowView = inflater.inflate(R.layout.inner_base_header_cutom, null);

到这个

 rowView = inflater.inflate(R.layout.inner_base_header_cutom, parent,false);

答案 1 :(得分:0)

在我的一些实验中,图书馆不能满足繁重的用户界面。

所以我做了什么,我只是使用了一个简单的listview,然后在我的cutom数组适配器中我仍然使用了viewholder类,并使用样式来查看布局就像一张卡片。