2011-08-23 57 views
0

這種方法完成了什麼?[位置]完成什麼?

URL aURL = new URL(myRemoteImages[position]); 

myRemoteImages是一個帶有4個不同變量的字符串列表。和位置是

int position; 

編輯: 所以,如果有反正我可以採取的位置處有可能是別的東西嗎?

可能

myRemoteImages{1,2,3,4};? 

編輯:我用這個來獲得的URI在cahce每個圖像...

public void getImagesfromCache(){ 
     ImageAdapter adapter = new ImageAdapter(); 

    String[] cachImages = myRemoteImages; 

    try { 
    URL aURL2 = null; 
    aURL2 = new URL(cachImages[position]); 
    URI imageCacheUri = null; 


    try { 
      imageCacheUri = aURL2.toURI(); 
     } catch (URISyntaxException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     if(new File(new File(this.getApplicationContext().getCacheDir(), "thumbnails"),"" + imageCacheUri.hashCode()).exists()){ 
      Log.v("FOUND", "Images found in cache! Now being loaded!"); 
      String cacheFile = this.getApplicationContext().getCacheDir() +"/thumbnails/"+ imageCacheUri.hashCode(); 
      ImageView i = new ImageView(this.getApplicationContext()); 
      FileInputStream fis = null; 
      try { 
       fis = new FileInputStream(cacheFile); 
      } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      Bitmap bm = BitmapFactory.decodeStream(fis); 

      i.setImageBitmap(bm); 
      putBitmapInDiskCache(imageCacheUri, bm); 

      Log.v("Loader", "Image saved to cache"); 

      ((Gallery) findViewById(R.id.gallery)) 
       .setAdapter(new ImageAdapter(MainMenu.this)); 
     } 

    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

正如你看到的姿勢使用,我怎麼能去另一種方式來返回的URL來獲取緩存中的圖像?

我可能將每個URI存儲在SharePreference中,並在onCreate()中獲取它們?

+0

你的意思是一個字符串數組(String [])。一個列表(如你所說)儘管概念很接近,但在java中並不是同一類型的對象,並沒有以相同的方式解決,並且有不同的方法。 – Snicolas

回答

3

它創建一個URL對象,由數組中指定的url字符串(myRemoteImages)指定的位置。

以下語法創建一個URL對象

URL aURL = new URL(<a string describing a URL>); 

以下語法在指定的位置得到的字符串值

myRemoteImages[position] 

因此,要對每個位置的URL,你可以做

URL url1 = new URL(myRemoteImages[0]); 
URL url2 = new URL(myRemoteImages[1]); 
URL url3 = new URL(myRemoteImages[2]); 
URL url4 = new URL(myRemoteImages[3]); 

雖然擁有一組網址雖然會好得多。因此,這將是

URL [] urls = new URL[myRemoteImages.length]; 
for (int i = 0; i < myRemoteImages.length; i++) { 
    urls[i] = myRemoteImages[i]; 
} 

有了這個陣列的URL,即使你知道,只有4張圖片,它可以很容易,而無需更改任何代碼進行擴展。硬編碼非常糟糕,從長遠來看通常會導致錯誤。

+0

查看我的編輯 – yoshi24

+0

我不確定我是否理解你的編輯意味着什麼? – Codemwnci

+0

而不是有myRemoteImages [位置]。無論如何,因爲我知道它只有4個職位,手動設置職位? – yoshi24

0

position是要訪問的數組(不是列表)中的元素。如果你有4個字符串然後位置應該是一個整數介於0和3

myRemoteImages[0]將是第一個形象,myRemoteImages[3]將是第四次和最後一次。

+0

查看我的編輯 – yoshi24

0

您正在從數組元素創建新的URL,可能是String項的數組。

myRemoteImages如何申報?

+0

public String [] myRemoteImages = {imageUrl,imageUrl2,imageUrl3,imageUrl4}; – yoshi24

0

myRemoteImages必須是數組,不是列表。

這是訪問該索引處數組元素的java語法。

+0

查看我的編輯 – yoshi24

+0

查看我的新編輯。給你一個更好的想法,我想完成 – yoshi24

1

假設position是隨着3.執行時,你貼,然後看起來像這樣的代碼值的int:

URL aURL = new URL(myRemoteImages[3]); 

myRemoteImages[3]是指:給我的第三項中的字符串列表myRemoteImagesnew URL()將創建一個新的實例URL與該第三項作爲規範參數。

+0

檢查我的編輯以上 – yoshi24

+0

感謝您讓我知道您改變了問題。 @Codemwnci完美地解釋了上述內容,所以我提出了他的回答:) –

1

Java中只有List對象沒有list變量。這是一個數組,位置是從數組開始的偏移值。數組不同於比如在Python和其他語言中找到的列表。數組的大小是固定的,並且是對象。

+0

看到我上面的編輯,以便更好地瞭解我在做什麼 – yoshi24

+0

您通過編輯改變了問題。 –