Как установить изображение из папки для рисования в макет вместо строки URL - PullRequest
0 голосов
/ 31 августа 2018

У меня есть один класс активности, где изображение отображается в виде сетки 2 столбца. Я использую следующий код для отображения изображений

public class BooksPage extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
    String image[] = {  "http://ecx.images-amazon.com/images/I/51cGqWqQPJL._SX258_BO1,204,203,200_.jpg"
            ,"http://ecx.images-amazon.com/images/I/91WAYiiPwML.jpg"
            ,"http://ecx.images-amazon.com/images/I/51CEndEnxCL._SX383_BO1,204,203,200_.jpg"
            ,"https://s3-ap-southeast-1.amazonaws.com/prod-textnook/bookimages/9788185749815.jpg"
            ,"http://ecx.images-amazon.com/images/I/51DyYdNU5mL.jpg"
            ,"http://ecx.images-amazon.com/images/I/61yhyD3HvkL.jpg"
            ,"http://www.skkatariaandsons.com/Best%20Sellers/978-81-85749-73-0.jpg"
            ,"http://ecx.images-amazon.com/images/I/81FGjPtdvnL.jpg"};
    String stream[]= {"MSC Physics","MSC Chemistry","MSC Biology",
            "MSC Geology","BBS|BBA","CA","Bachelor","+2 Science"};
    TextView navName,navEmail;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_books_page);
       


        

        RecyclerView favPlaces = (RecyclerView) findViewById(R.id.favPlaces);
        StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
        favPlaces.setLayoutManager(layoutManager);
        favPlaces.setHasFixedSize(true);
        ArrayList<BookDetails> placeList = getPlaces();

        StaggeredAdapter staggeredAdapter = new StaggeredAdapter(this,placeList);
        favPlaces.setAdapter(staggeredAdapter);
        navName.setText(PreferenceManager.getDefaultSharedPreferences(this).getString("name","null"));
        navEmail.setText(PreferenceManager.getDefaultSharedPreferences(this).getString("email","null"));
    }
    private ArrayList<BookDetails> getPlaces() {
        ArrayList<BookDetails> details = new ArrayList<>();
        for (int index=0; index<image.length;index++){
            details.add(new BookDetails(image[index],stream[index]));
        }
        return details;
    }


    }
}

Но вместо использования URL я бы хотел использовать изображение из папки drawable.

Как я могу это сделать .. Пожалуйста, помогите.

Заранее спасибо.

1 Ответ

0 голосов
/ 31 августа 2018

Вам нужно создать массив целых чисел с изображениями в папке drawable.

Код:

        //Array of images from drawable folder
        int images[] = {R.drawable.image1,R.drawable.image2,R.drawable.image3,...};

        //Your method still working without problem.
        private ArrayList<BookDetails> getPlaces() {
            ArrayList<BookDetails> details = new ArrayList<>();
            for (int index = 0; index < images.length; index++){
                details.add(new BookDetails(image[index],stream[index]));
            }
            return details;
        }

Возможно, вам понадобится адаптировать ваш класс BookDetails , потому что теперь вы используете целое число вместо String, и вам следует изменить StaggeredAdapter для загрузки изображения из ресурса, а не из URL.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...