Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 滚动listview时,会调整listviewitems的大小_Android_Android Listview - Fatal编程技术网

Android 滚动listview时,会调整listviewitems的大小

Android 滚动listview时,会调整listviewitems的大小,android,android-listview,Android,Android Listview,我有一个问题,我用layout Incoter实现了自定义listview。我面临一个问题,当我滚动列表视图时,它的项目会调整为小项目。我无法跟踪问题。。请帮忙 class ListDownloadedAdapter extends BaseAdapter { ArrayList<View> data=null; Context mContext=null; LayoutInflater mInflater; public ListDownloadedAd

我有一个问题,我用layout Incoter实现了自定义listview。我面临一个问题,当我滚动列表视图时,它的项目会调整为小项目。我无法跟踪问题。。请帮忙

class ListDownloadedAdapter extends BaseAdapter

{

 ArrayList<View> data=null;

 Context mContext=null;

 LayoutInflater mInflater;



    public ListDownloadedAdapter(ArrayList<View> arg,Context context)

    {

          mInflater = LayoutInflater.from(context);

          data=arg;



          mContext=context;

    }

    public void reverse()

    {

       Collections.reverse(data);

    }



 @Override

 public int getCount()

 {

 // TODO Auto-generated method stub

 return data.size();

}



@Override

public Object getItem(int arg0)

{



 return data.get(arg0);

 }



 @Override

 public long getItemId(int arg0) {



  return 0;

 }



  public View getView(int position, View convertView, ViewGroup parent)

  {

    ListContent holder;

    holder=new ListContent();

        //convertView=mInflater.inflate(R.layout.download_progress, parent, false);

    convertView=(View)getItem(position);

    holder.pbar=(ProgressBar)convertView.findViewById(R.id.status_progress);

    holder.statustext=(TextView)convertView.findViewById(R.id.status_text);

    holder.filesize=(TextView)convertView.findViewById(R.id.txtkbps);

    return convertView;

}

class ListContent

{

    ProgressBar pbar=null;

    TextView statustext=null,filesize=null;

}

}
类列表下载适配器扩展BaseAdapter
{
ArrayList数据=null;
上下文mContext=null;
拉平机;
公共列表下载适配器(ArrayList参数,上下文)
{
mInflater=LayoutInflater.from(上下文);
数据=arg;
mContext=上下文;
}
公共无效反向()
{
收集。反向(数据);
}
@凌驾
public int getCount()
{
//TODO自动生成的方法存根
返回data.size();
}
@凌驾
公共对象getItem(int arg0)
{
返回data.get(arg0);
}
@凌驾
公共长getItemId(int arg0){
返回0;
}
公共视图getView(int位置、视图转换视图、视图组父视图)
{
列表内容持有者;
holder=新的ListContent();
//convertView=mInflater.充气(R.layout.download\u progress,parent,false);
convertView=(视图)getItem(位置);
holder.pbar=(ProgressBar)convertView.findViewById(R.id.status\u progress);
holder.statustext=(TextView)convertView.findViewById(R.id.status\u text);
holder.filesize=(TextView)convertView.findViewById(R.id.txtkbps);
返回视图;
}
类列表内容
{
ProgressBar pbar=null;
TextView statustext=null,filesize=null;
}
}
下面是listview实现的xml文件

  <ListView android:id="@+id/downloadsegmentdownloadecomplete" android:divider="@drawable/transparent"  android:layout_width="fill_parent" android:layout_height="wrap_content" android:cacheColorHint="#00000000" android:dividerHeight="0px" ></ListView>

以下是充气单元的xml

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

  <RelativeLayout

   android:layout_width="match_parent" android:paddingTop="5dp" android:paddingBottom="5dp"  android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_gravity="center|fill">







    <RelativeLayout

        android:id="@+id/completed_progresslayout"

        android:layout_width="match_parent"

        android:layout_height="wrap_content" >



        <TextView

            android:id="@+id/completed_status_text"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentTop="true"

            android:layout_marginLeft="10dp"

            android:layout_toRightOf="@+id/txtpercent"

            android:focusable="false"

            android:focusableInTouchMode="false"

            android:text="filename"

            android:textColor="#686870" />



        <TextView

            android:id="@+id/completed_txtkbps"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentRight="true"

            android:layout_below="@+id/completed_status_text"

            android:layout_marginRight="10dp"

            android:text="kbps"

            android:textColor="#b0b0b8" />

    </RelativeLayout>


很抱歉,您对适配器的整个实现都是错误的

适配器应该只存储数据(字符串、整数,可能是游标),而不存储视图本身。 对于您试图实现的目标,我建议您扩展ArrayAdapter,只覆盖getView()

比如:

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

    if (convertView == null)
        convertView = createNewView();
    Holder h = (Holder)convertView.getTag();

    h.textView1.setText( .... // from here you put the data into the existing views.

    return convertView;

    // then the new view
    private View createNewView() {

    // Instantiate view
    View v = getLayoutInflater().inflate(R.layout.myView, null);
    Holder h = new Holder();
    v.setTag(h);

    // point to the views
    h.textView1 = (TextView) findViewById(R.id.title);
    // carry on for the other views....

    return v;
    }

这对你有意义吗?

-1。您需要回到实现列表视图和自定义适配器的基础上。实际上,它可以根据功能完美地工作,但唯一的问题是滚动列表视图时视图会缩小。它可能正在工作。但这是一种非常低效的方法,可能很容易泄露您的上下文。如果你不相信我的话,去谷歌I/O 2011看看视频。安卓系统的工程师们自己为我们指明了方向。就像我贴的。