2017-01-04 1 views
0

Ich habe ein paar ähnliche Fragen gesehen, konnte aber mein Problem nicht lösen. Ich habe einen ListView mit einem ImageView und TextView. Ich benutze benutzerdefinierte Adapter und ViewHolder-Muster, aber meine Liste scrollt noch nicht glatt? Ich habe bereits Bilder in meinen Mipmap-Ordner heruntergeladen, also lade ich sie nicht direkt herunter. Ich weiß nicht, was ich noch tun kann, um schnelles Scrollen zu verbessern, wie in Quora oder einer anderen professionellen ListView App? Hier ist mein Adapter:ListView reibungslos in Android?

class customAdapter extends BaseAdapter { 

ArrayList<Object> itemList; 
Activity context; 
public LayoutInflater inflater; 

public customAdapter(Activity context,ArrayList<Object> itemList) { 
    super(); 

    this.context = context; 
    this.itemList = itemList; 
    this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

} 

private static class ViewHolder { 
    TextView text; 
    ImageView image; 
} 

@Override 
public int getCount() { 
    return itemList.size(); 
} 

@Override 
public Object getItem(int position) { 
    return itemList.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

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

    ViewHolder holder; 
    if(convertView == null){ 
     holder = new ViewHolder(); 

     convertView = inflater.inflate(R.layout.custom_row, parent, false); 
     holder.text = (TextView) convertView.findViewById(R.id.text); 
     holder.image = (ImageView) convertView.findViewById(R.id.image); 
     convertView.setTag(holder); 
    } else 
     // View is being recycled, retrieve the viewHolder object from tag 
     holder = (ViewHolder) convertView.getTag(); 

     ListItem items = (ListItem) itemList.get(position); 
     holder.text.setText(items.getText()); 
     holder.image.setImageResource(items.getImg()); 

     return convertView; 
    } 
} 

hier mein custom_row ist:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ImageView 
    android:layout_width="70dp" 
    android:layout_height="70dp" 
    android:id="@+id/image" 
    android:layout_marginTop="25dp" 
    android:layout_marginLeft="20dp" 
    android:src="@mipmap/austria" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="Large Text" 
    android:id="@+id/text" 
    android:layout_marginTop="45dp" 
    android:layout_marginLeft="30dp" 
    android:textColor="#ffffff" 
    android:textStyle="bold" /> 

Und hier ist die Auswahl von Bildern Ich verwende: http://img.freeflagicons.com/thumb/round_icon/austria/austria_640.png

+0

Warum verwenden Sie 'ListView', wenn' RecyclerView' für eine Weile vorhanden ist? Zeigen Sie auch bitte Ihre 'custom_row.xml' und ein Beispiel von Bildern an, die Sie hier verwenden. – Divers

+0

Ich bin relativ neu zu Android und versuche, meine erste App zu entwickeln. Also dachte ich, ListView ist eine gute Wahl. –

+0

Hmm .. Ich sehe kein Problem auf der Adapterseite. Vielleicht sollten Sie genauer sein, wie Sie die Listview-Daten abrufen (nicht nur das Bild natürlich) und sie füllen –

Antwort

2

Überprüfen Sie die Größe von die Bilder. Das Laden von Bildern mit größerer Größe beeinträchtigt die ListView-Leistung.