2012-02-22 31 views
6

Làm cách nào để đếm số lượng mục trong thư mục có thể kéo được bắt đầu bằng "fr"?Đếm các mục trong thư mục có thể kéo được bắt đầu bằng chuỗi cụ thể

Bối cảnh; Tôi muốn tạo một trình ngẫu nhiên để chọn một hình ảnh ngẫu nhiên từ thư mục drawables. Để làm cho nó tương lai-proof, tôi muốn thiết lập giá trị tối đa của randomizer cho số lượng các mục có thể eligable để chọn ..

Trả lời

10

Giống như các tài nguyên khác trong Android, drawables được truy cập thông qua 'R' lớp, đó là chỉ tập hợp các lớp tĩnh chứa các trường số nguyên tĩnh. Không có "có được tất cả các tên drawable" metthod (ít nhất là tôi không biết nó) ngoài việc sử dụng sự phản chiếu.

Bạn sẽ cần danh sách các id có thể kéo để ngẫu nhiên. Bạn có thể tự động điền vào danh sách này bằng cách sử dụng phản ánh:

import java.lang.reflect.Field; 
    ... 
    Field[] fields = R.drawable.class.getFields(); 
    List<Integer> drawables = new ArrayList<Integer>(); 
    for (Field field : fields) { 
     // Take only those with name starting with "fr" 
     if (field.getName().startsWith("fr")) { 
      drawables.add(field.getInt(null)); 
     } 
    } 

Bằng cách này bạn sẽ có danh sách các id có thể thu hút bạn quan tâm. Bạn có thể sử dụng các id đó sau này, nơi bạn thường sử dụng, ví dụ: R.drawable.someResource

+0

Tuyệt vời! field.get (i) sẽ nhận được id, int i có thể được ngẫu nhiên với fields.size() làm giá trị lớn nhất. Cảm ơn!! –

+0

Tomasz, nhờ câu trả lời của bạn, tôi đã có thể viết https://play.google.com/store/apps/details?id=happyworx.nl.Applez. Cảm ơn bạn! –

+0

Câu trả lời này vẫn được cập nhật hoặc có bất kỳ phương pháp tốt hơn nào xuất hiện trong ba năm qua không? – SuperBiasedMan

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