2

電話のストレージから多くのものをロードするカスタムリストビューを作成しました。下にスクロールすると、リストビューのテキストが次のように消えます:

ここに画像の説明を入力

次に、上にスクロールすると、表示されていたテキストも消えます。従来のリストビューでは、すべてのテキストが表示されました。これが私のgetViewコードです:

public View getView(int position, View convertView, ViewGroup parent) {
           View row = convertView;
           ListViewHolder holder = null ;
             String id = null;

           if(row == null)
        {
               LayoutInflater inflater = getLayoutInflater();
            row = inflater.inflate(R.layout.listview_item_row, parent, false);
         holder = new ListViewHolder();
      music_column_index = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
      musiccursor.moveToPosition(position);
      id = musiccursor.getString(music_column_index);
      holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
      holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
      holder.txtTitle.setText(id);
      holder.imgIcon.setImageResource(R.drawable.musicc);
      row.setTag(holder);
             } else {
                   holder = (ListViewHolder)row.getTag(); 
             }
           holder.txtTitle.setVisibility(View.VISIBLE);
           holder.txtTitle.setText(id);
           holder.imgIcon.setImageResource(R.drawable.musicc);
             return row;
       }

そして行:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp">

     <ImageView android:id="@+id/imgIcon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_marginRight="15dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" />

     <TextView android:id="@+id/txtTitle"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:textStyle="bold"
        android:textSize="22dp"
        android:textColor="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" />

</LinearLayout>

main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical" android:layout_width="fill_parent"
      android:layout_height="fill_parent">
    <ListView
        android:id="@+id/PhoneMusicList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:cacheColorHint="#00000000"
        android:scrollingCache="false"
        >
    </ListView>

</LinearLayout>
4

3 に答える 3

0

これを試していただけますか:

holder = new ListViewHolder();
music_column_index = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
musiccursor.moveToPosition(position);
id = musiccursor.getString(music_column_index);
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.txtTitle.setText(id);
holder.imgIcon.setImageResource(R.drawable.music);
row.setTag(holder);
于 2013-02-23T12:26:06.183 に答える
0

あなたholderはそれを間違っています。最初holderにビューのタグ値として設定してから、ホルダーを初期化します。この順序を逆にします。

holder = new ListViewHolder();
row.setTag(holder); // remove this line
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.txtTitle.setText(id);
holder.imgIcon.setImageResource(R.drawable.music);
row.setTag(holder);  // and add this one
于 2013-02-23T12:04:02.707 に答える
0

リストビューxmlで使用するだけです

android:cacheColorHint="#00000000"
于 2013-02-23T12:11:16.023 に答える