2011-04-22 31 views
5
iv.setImageResource(R.drawable.icon); 

dòng này đang làm việc tốt cho tôiandroid: Variable trôi qua cho R.drawable.variableValue

tôi có thể vượt qua một giá trị biến thay vì biểu tượng như thế nào nếu tôi có 10 hình ảnh trong drawable và tôi muốn quyết định trên thời gian chạy mà hình ảnh để hiển thị tôi có thể vượt qua các giá trị thông qua một biến và làm việc nó như

String variableValue = imageName; 
    iv.setImageResource(R.drawable.variableValue); 

Trả lời

4

bạn có thể sử dụng một mảng để xác định drawables của bạn:

int[] images = new int[2]; 
images[0] = R.drawables.image1; 
images[1] = R.drawables.image2; 

Và sau đó bạn có thể sử dụng mảng này để thiết lập một hình ảnh trong thời gian chạy:

lv.setImageResource(images[i]); 

đâu là trong trường hợp này hoặc là 0 để trỏ đến hình ảnh đầu tiên hoặc 1 để trỏ đến hình ảnh thứ hai của mảng .

+0

làm việc như sự quyến rũ ... awsome :) ... Cảm ơn bạn đã làm cho cuộc sống dễ dàng hơn chứ không phải đưa các biến chứng nhiều hơn vào một cái gì đó vốn đã phức tạp (ít nhất đối với tôi). –

+0

Bởi tôi, nó chỉ hoạt động với R.drawable thay vì R.drawables –

0

Không, nó sẽ không hoạt động theo cách đó.

Trong dòng đầu tiên của bạn icon là một tạo static final thành viên của static final class R.drawable nên cố gắng để nối nó lên như đó là một String sẽ cung cấp cho bạn một lỗi biên dịch.

Nhưng bạn có thể thử sử dụng

iv.setImageURI(uri); 

nơi uri là URI để hình ảnh của bạn, vì vậy bạn có thể sử dụng một giá trị chuỗi đây.
Ngoài ra, theo tài liệu api, nó sẽ là một giải pháp tốt hơn để sử dụng setImageBitmap: bạn nên xem xét nó dựa trên tài nguyên của bạn.

APIDocs:

public void setImageURI (Uri uri) 

Từ: API Cấp 1

Thiết lập nội dung của ImageView này để các quy định Uri.

Thao tác đọc và giải mã bitmap trên chuỗi giao diện người dùng, điều này có thể gây ra hiện tượng trục trặc độ trễ . Nếu đó là một mối quan tâm, hãy xem xét sử dụng sử dụng setImageDrawable (Drawable) hoặc setImageBitmap (Bitmap) và BitmapFactory để thay thế.

thông số
uri Các Uri của một hình ảnh

16

Resources.getIdentifier() có thể giải quyết vấn đề của bạn.

String variableValue = imageName; 
iv.setImageResource(getResources().getIdentifier(variableValue, "drawable", getPackageName())); 
+0

Cảm ơn bạn đã làm việc cho tôi. –

Các vấn đề liên quan