0

ファイルリストに画像を表示するには? これはアイコンのみを表示する私のコードです。アイコンの代わりに実際の画像を表示したいのですが、どうすればよいですか? グリッドビューで実際の画像を表示する方法を教えてください助けてください

      private void inflateListView(File[] files){
    List<Map<String,Object>> listItems=new ArrayList<Map<String,Object>>();
    for(int i=0;i<files.length;i++){
        Map<String, Object> listItem=new HashMap<String, Object>();

        if(files[i].isDirectory()){

            listItem.put("icon", R.drawable.folder);

        }
        else
        {
            listItem.put("icon", R.drawable.file);
        }
        listItem.put("fileName", files[i].getName());
        listItems.add(listItem);
    }
    SimpleAdapter simpleAdapter=new SimpleAdapter(this,listItems,R.layout.line,new  
 String[]{"icon","fileName"},new int[]{R.id.icon,R.id.file_name});
    gridView.setAdapter(simpleAdapter);

}
4

1 に答える 1

0

ファイルのパスを取得して、それを arraylist に格納します。カスタムアダプターを用意してください。パスを使用して、イメージを grdiview に表示します。

Universal Image Loader を使用することをお勧めします

説明:

  1. フォルダー配下のファイルのパスを取得します。(フォルダに画像のみがあると仮定します。)ArrayList に格納します。arraylist とアクティビティ コンテキストをアダプター コンストラクターに渡します。

  2. CustomAdapter に、MyAdapter が BaseAdapter を拡張すると言わせます。各行のカスタム レイアウトを膨張させ、位置に応じて画像を表示します。

  3. 以下のように Universal Image Loader を使用します

https://github.com/nostra13/Android-Universal-Image-Loader .

ArrayList<String> f= new ArrayList<String>
private File[] listFile; 

public void getFromSdcard()
{
    File file=  new File(android.os.Environment.getExternalStorageDirectory(),"TTImages_cache");

        if (file.isDirectory())
        {
            listFile = file.listFiles();

            for (int i = 0; i < listFile.length; i++)
            {

                f.add(listFile[i].getAbsolutePath());

            }
        }
}


    adapter=new LazyAdapter(Activity.this,thumb);
gridView.setAdapter(adapter);

CustomAdapter で

private Activity activity;
private ArrayList<String> data = new ArrayList<String>();
private LayoutInflater inflater=null;
public ImageLoader imageLoader; 
DisplayImageOptions options;

public LazyAdapter(Activity a, ArrayList<String> d) {
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    File cacheDir = StorageUtils.getOwnCacheDirectory(a, "MyRaghu");


 // Get singletone instance of ImageLoader
   imageLoader = ImageLoader.getInstance();
 // Create configuration for ImageLoader (all options are optional)
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(a)
              // You can pass your own memory cache implementation
             .discCacheExtraOptions(1024, 1024, CompressFormat.PNG, 100)
             .discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
             .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
             .enableLogging()
             .build();
 // Initialize ImageLoader with created configuration. Do it once.
 imageLoader.init(config);
    //imageLoader.init(ImageLoaderConfiguration.createDefault(a));
   // imageLoader=new ImageLoader(activity.getApplicationContext());
    options = new DisplayImageOptions.Builder()
    .showStubImage(R.drawable.ic_launcher)
    .cacheInMemory()
    .cacheOnDisc()
    .displayer(new RoundedBitmapDisplayer(20))
    .build();
  }

あなたのgetViewで

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
     vi = inflater.inflate(R.layout.rowimage, null);

    ImageView image=(ImageView)vi.findViewById(R.id.ivv); 
    ProgressBar pb= (ProgressBar)vi.findViewById(R.id.pb); 
    //imageLoader.displayImage(data.get(position).toString(), image,options);

    return vi;
}
于 2013-04-17T06:44:18.367 に答える