-2

レイアウトインフレータを使用してカスタムリストビューを実装しました。リストビューをスクロールすると、アイテムのサイズが小さなアイテムに変更されるという1つの問題に直面しています。問題を追跡できません。助けてください。

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;

}

}

以下は、リストビュー実装の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>

4

1 に答える 1

0

申し訳ありませんが、アダプターの実装全体が間違っています。

アダプターは、データ (文字列、整数、おそらくカーソル) のみを格納し、ビュー自体は格納しないことになっています。あなたが達成しようとしているものについては、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;
    }

それはあなたにとって意味がありますか?

于 2012-09-07T12:44:05.053 に答える