su2420370731
fafasj
采纳率50%
2017-08-07 09:00 阅读 1.6k

怎么把List里的所有图片显示出来,代码如下。希望大神们能在给的代码里增删。小白哈

public class MainActivity extends AppCompatActivity {
// 图片和id列表
private List picList = new ArrayList();
private Bitmap b;
private String name;
private ListView Lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getImagePathFromSD();
Lv= (ListView) findViewById(R.id.lv);
Lv.setAdapter(new MyAdapter());
}

private class MyAdapter extends BaseAdapter{

    @Override
    public int getCount() {
        return picList.size()/2;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;
        if (convertView==null){
           view= View.inflate(getApplicationContext(),R.layout.item,null);
        }else {
            view=convertView;
        }
        //找到数据来显示
        ImageView iv_potoes= (ImageView)view.findViewById(R.id.imageView1);
        TextView tv_name= (TextView) view.findViewById(R.id.tvname);
        //picList.get(position);
        iv_potoes.setImageBitmap(b);
        tv_name.setText(name);
        tv_name.setTextColor(Color.RED);
        return view;
    }
}


// 从sd卡获取图片资源
private List<Object> getImagePathFromSD() {
    // 得到sd卡内路径
    String imagePath =Environment.getExternalStorageDirectory().toString() + "/nongbang";
    // 得到该路径文件夹下所有的文件
    File mfile = new File(imagePath);
    File[] files = mfile.listFiles();
    // 将所有的文件存入ArrayList中,并过滤所有图片格式的文件
    for (int i = 0; i < files.length; i++) {
        File file = files[i];

        if (checkIsImageFile(file.getPath())) {
            //获取图片
            b=BitmapFactory.decodeFile(file.getPath());
            picList.add(b);
            //获取文件名
            String houzuiname=file.getName();
            name=houzuiname.substring(houzuiname.lastIndexOf(0)+1,houzuiname.lastIndexOf(".")).toLowerCase();
            picList.add(name);

        }
    }
    // 返回得到的图片列表
    return picList;
}

// 检查扩展名,得到图片格式的文件
private boolean checkIsImageFile(String fName) {
    boolean isImageFile = false;
    // 获取扩展名
    String FileEnd = fName.substring(fName.lastIndexOf(".") + 1,fName.length()).toLowerCase();
    if (FileEnd.equals("jpg") || FileEnd.equals("gif")|| FileEnd.equals("png") || FileEnd.equals("jpeg")|| FileEnd.equals("bmp")) {
        isImageFile = true;
    } else {
        isImageFile = false;
    }
    return isImageFile;
}

/*
这里面我只能显示输入到List的最后一组,请问大佬们怎么修改让TextView能够把第一张到最后一张都显示出来啊
*/

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • su2420370731 fafasj 2017-08-07 09:15

    Log.i("TAGB", (String) picList.get(position+1));
    Log.i("TAGB", (String) picList.get(1));
    这两句中的第一个在运行时qpp会被强制终止出错,而第二个却没有,position参数是int型为什么会出错

    点赞 评论 复制链接分享
  • su2420370731 fafasj 2017-08-07 11:12

    已经解决了,把图片和文件名分别存入不同的list就好了 ,之前两个都放在piclist里面再用piclist.get(position)的时候因位Bitam和String强转出错。

    点赞 评论 复制链接分享

相关推荐