“您的内容必须有一个ListView,其id属性为’android.R.id.list’”从ListActivity更改为视图时

前端之家收集整理的这篇文章主要介绍了“您的内容必须有一个ListView,其id属性为’android.R.id.list’”从ListActivity更改为视图时前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想编写一个应用程序,其中包括:使用sdcard中的图片文件填充列表视图,b:从列表中选择选项时显示图像.

但是,它与上述例外有关.我看不出为什么……?请帮忙!

主要活动:

  1. public class ProjektJimmuActivity extends ListActivity {
  2.  
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. navigateTo("/sdcard/");
  7. }
  8.  
  9. public void navigateTo(String dir){
  10. setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,getListOfFiles(dir)));
  11. getListView().setTextFilterEnabled(true);
  12. }
  13.  
  14. public String[] getListOfFiles(String dir){
  15. File file = new File(dir);
  16. String[] files = file.list(new Filter());
  17. return files;
  18. }
  19.  
  20. @Override
  21. protected void onListItemClick(ListView l,View v,int position,long id) {
  22. super.onListItemClick(l,v,position,id);
  23. Object item = l.getItemAtPosition(position);
  24. Toast.makeText(this,"Selection: "+ item.toString(),Toast.LENGTH_SHORT).show();
  25. setContentView(new PictureView(this,item.toString()));
  26. }
  27.  
  28. private class Filter implements FilenameFilter{
  29. public boolean accept(File dir,String filename) {
  30. return (( filename.endsWith("jpg") || filename.endsWith("png") || filename.endsWith("gif") ) && !filename.startsWith("._") );
  31. }
  32. }
  33.  
  34. }

图片视图:

  1. public class PictureView extends View{
  2.  
  3. private Bitmap bitmap;
  4. int width,height;
  5. private Canvas canvas;
  6.  
  7. public PictureView(Context context,String pictureFile) {
  8. super(context);
  9. setFocusable(true);
  10. bitmap = BitmapFactory.decodeFile("/sdcard/"+pictureFile);
  11. height = bitmap.getHeight();
  12. width = bitmap.getWidth();
  13. }
  14.  
  15. @Override
  16. protected void onDraw(Canvas canvas) {
  17. super.onDraw(canvas);
  18. canvas.drawColor(0xFFCCCCCC);
  19. canvas.drawBitmap(bitmap,null,null);
  20. }
  21. }

解决方法

因为您正在扩展ListActivity,所以您的布局xml文件中必须有一个ListView,其id为@android:id / list.扩展ListActivity意味着此活动主要是一个列表,但可能旁边有一些组件.因此,当您假设某个活动最初是一个列表时,您应该在该活动的布局xml文件中指定一个列表,即主列表.那个列表,应该有id,@ android:id / list.所以,只需将活动的ListView的id字段设置为@android:id / list.

猜你在找的Android相关文章