Um etwas anderes als ein Array von String zu behandeln angezeigt als Textview in einem Listview, müssen Sie Ihren eigenen Individuell gestalteten Adapter schreiben (so Android weiß, wie diese Elemente anzuzeigen)
Hier ein Beispiel sind:
Ihre Aktivität:
public class MyActivity extends Activity{
private ArrayList<URL> MY_DATA;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Sets the View of the Activity
setContentView(R.layout.my_activity);
ListView myList = (ListView) findViewById(R.id.myList);
MyAdapter adapter = new MyAdapter(this, MY_DATA);
listView.setAdapter(adapter);
}
Ihre Aktivität des Layout (my_activity.xml hier):
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myList"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
Und Ihr individueller Adapter:
public class MyAdapter extends BaseAdapter{
private LayoutInflater inflater;
private ArrayList<URL> data;
public EventAdapter(Context context, ArrayList<URL> data){
// Caches the LayoutInflater for quicker use
this.inflater = LayoutInflater.from(context);
// Sets the events data
this.data= data;
}
public int getCount() {
return this.data.size();
}
public URL getItem(int position) throws IndexOutOfBoundsException{
return this.data.get(position);
}
public long getItemId(int position) throws IndexOutOfBoundsException{
if(position < getCount() && position >= 0){
return position;
}
}
public int getViewTypeCount(){
return 1;
}
public View getView(int position, View convertView, ViewGroup parent){
URL myUrl = getItem(position);
ViewHolder holder = new ViewHolder(); // Use a ViewHolder to save your ImageView, in order not to have to do an expensive findViewById for each iteration
// DO WHAT YOU WANT WITH YOUR URL (Start a new activity to download image?)
if(convertView == null){ // If the View is not cached
// Inflates the Common View from XML file
convertView = this.inflater.inflate(R.id.my_row_layout, null);
holder.myImageView = (ImageView)findViewById(R.id.myRowImageView);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.myImageView.setImageBitmap(MY_BITMAP_I_JUST_DOWNLOADED);
return convertView;
}
static class ViewHolder{
ImageView myImageView;
}
}
Und schließlich Ihre Reihe Layout (my_row_layout.xml hier):
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myRowImageView"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
meine Probe Versuchen http://stackoverflow.com/questions/541966/android- how-do-i-do-a-lazy-load-of-images-in-listview/3068012 # 3068012 – Fedor
danke fedor für deine Antwort, aber es ist zu komplex, um zu verstehen –
Ich fürchte, es kann nicht einfacher gemacht werden . Sie können meine ImageLoader-Klasse einfach wiederverwenden, ohne alles darin zu verstehen. – Fedor