0

リストビューを定義し、レイアウト xml ファイルのリストビューの ID に正しくリンクしました。それでも、上記のエラーが発生します。

ここに投稿された同様の質問を調査しましたが、役に立ちませんでした。

助けてください。

public class ImageList extends ListActivity {

final static String imageUrls[] = { //some urls

        };

private List<Photo> model = new ArrayList<Photo>();
PhotoAdapter adapter = null;
ListView list = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.imagelist);

    list = (ListView) findViewById(R.id.lvImageList);
    // ArrayList<Bitmap> images = new ArrayList<Bitmap>();

    adapter = new PhotoAdapter(this, android.R.layout.simple_list_item_1,
            model);

    list.setAdapter(adapter);
    ProduceImageList(imageUrls);

}

public void ProduceImageList(String[] imageUrls) {
    int size = imageUrls.length;
    ImageView imagePlace = null;
    for (int i = 0; i < 4; i++) {
        imagePlace = (ImageView) getListView().getChildAt(i);
        downloadImage task = new downloadImage(imagePlace);
        task.execute(imageUrls[i]);
    }
}
 //asynchronous downloading of images
public class downloadImage extends AsyncTask<String, Void, Bitmap> {
    // private String url;
    Photo p = new Photo();
    private final WeakReference<ImageView> imageViewReference;

    public downloadImage(ImageView imageView) {
        imageViewReference = new WeakReference<ImageView>(imageView);
    }

    @Override
    protected Bitmap doInBackground(String... params) {
        // TODO Auto-generated method stub
        String localUrl = params[0];
        //here a bitmap download method is used which works fine separately
                    return BitmapDownload.DownloadBitmap(localUrl);
    }

    @Override
    protected void onPostExecute(Bitmap result) {
        // TODO Auto-generated method stub
        if (isCancelled())
            result = null;
        if (imageViewReference != null) {
            ImageView imageView = imageViewReference.get();
            if (imageView != null) {
                p.setPhotoPic(result);
                adapter.add(p);
            }
        }

        super.onPostExecute(result);
    }

}
  //class defined with getter and setter method
public class Photo {
    private Bitmap pic = null;

    public Bitmap getPhotoPic() {
        return pic;
    }

    public void setPhotoPic(Bitmap incomingPic) {
        this.pic = incomingPic;
    }
}

 //custom ArrayAdapter to hold images
class PhotoAdapter extends ArrayAdapter<Photo> {

    public PhotoAdapter(Context context, int textViewResourceId,
            List<Photo> objects) {
        super(context, textViewResourceId, objects);
        // TODO Auto-generated constructor stub
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View row = convertView;
        PhotoHolder holder = null;
        if (row == null) {
            LayoutInflater inflater = getLayoutInflater();
            row = inflater.inflate(R.layout.imagelistrow, parent,false);
            holder = new PhotoHolder(row);
            row.setTag(holder);
        } else
            holder = (PhotoHolder) row.getTag();
        holder.populateFrom(model.get(position));
        return (row);
    }

}

 //holder for the row view
static class PhotoHolder {
    private ImageView imagePlace = null;
    private View row = null;

    PhotoHolder(View row) {
        this.row = row;

        imagePlace = (ImageView) row.findViewById(R.id.ivImageList);
    }

    void populateFrom(Photo p) {

        imagePlace.setImageBitmap(p.getPhotoPic());
    }
}

}

私の見解は...

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="schemas.android.com/apk/res/android"; android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> 
         <ListView android:id="@+id/lvImageList" android:layout_width="match_parent" android:layout_height="wrap_content"/>
    </LinearLayout>
4

2 に答える 2

3

カスタム ListView ID を使用することはできませんListActivity。同時にListActivity、エラーごとに、 に特定の ID が必要ListViewです。現在、 のカスタム ID を使用していますlvImageList。Activity を変更して使用ActivityしないようにするListActivityか、ListView の XML を使用するように更新します。

<ListView
    android:id="@android:id/android:list"
    ... />
于 2013-04-02T23:23:34.993 に答える
0

xml ファイルでカスタム Listview id を定義する必要はありません。Android Listview id を使用するだけで、ListActivityで id でビューを見つける必要はありません。getListView()を呼び出して、デフォルトの Android id を持つレイアウト ファイルで定義されているリストビューを取得するだけです。

于 2013-04-03T04:41:58.673 に答える