运行代码时无法找到ListView.说ListActivity必须有一个ListView属性id android.R.i



我已经定义了listview,并与布局xml文件中的listview的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>

您不能同时使用自定义ListView ID和ListActivity作为ListActivity,根据错误,需要为您的ListView提供特定的ID。目前,您使用的是自定义ID lvImageList。要么改变你的活动使用Activity,而不是ListActivity或更新你的ListView的XML使用:

<ListView
    android:id="@android:id/android:list"
    ... />

不需要在xml文件中定义自定义Listview id。你只需要使用android Listview id不需要在ListActivity中通过id找到视图,你只需要调用getListView()来获得Listview它是在布局文件中定义的默认android id

相关内容

最新更新