Сетка для адаптера изображений - PullRequest
0 голосов
/ 23 сентября 2018

Я создал gridView с изображениями, и все работает нормально.У меня есть набор изображений, и я могу нажать на каждое из них и перейти к другой деятельности, как я хочу.Проблема в том, что когда я добавляю новое изображение в адаптер, оно добавляется в конец стека.Как я могу изменить отображение изображений от нового к старому, а не от старого к новому, как сейчас.(Я сделал что-то сам (как вы можете видеть в комментариях), и он отображается так, как я хочу, но когда я нажимаю на изображение, я получаю неправильное изображение):

final ArrayList<String> imgString = new ArrayList<>();
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
        Query query = reference
                .child("user_photos")
                .child(FirebaseAuth.getInstance().getCurrentUser().getUid());
        query.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for ( DataSnapshot singleSnapshot :  dataSnapshot.getChildren()){
                    // photos.add(singleSnapshot.getValue(Photo.class));
                    imgString.add(singleSnapshot.child("postimage").getValue().toString());
                }
                //setup our image grid
                int gridWidth = getResources().getDisplayMetrics().widthPixels;
                int imageWidth = gridWidth/NUM_GRID_COLUMNS;
                gridView.setColumnWidth(imageWidth);

                final ArrayList<String> imgUrls = new ArrayList<String>();
                for(int i = 0; i < imgString.size(); i++){
                    imgUrls.add(imgString.get(i));
//                for(int i = imgString.size()-1; i >=0 ; i--){
//                    imgUrls.add(imgString.get(i));
                }
                GridImageAdapter adapter = new GridImageAdapter(ProfileActivity.this,R.layout.layout_grid_imageview,"", imgUrls);
                gridView.setAdapter(adapter);



                gridView.setOnItemClickListener(new AdapterView.OnItemClickListener()
                {
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                        PostKey=imgString.get(i);
                        Intent intent = new Intent(ProfileActivity.this, ViewPostActivity.class);
                        intent.putExtra("PostKey_profile",PostKey);
                        startActivity(intent);
                        finish();
                    }
                });
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.d(TAG, "onCancelled: query cancelled.");
            }
        });
    }

1 Ответ

0 голосов
/ 23 сентября 2018
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    PostKey=imgString.get(i);//here i is the position of the view in the adapter.

Как и вы:

for(int i = imgString.size()-1; i >=0 ; i--){
              imgUrls.add(imgString.get(i));//imgUrls.get(0) stored imgString.get(imgString.size()-1)

Когда вы щелкаете элемент в позиции 0, его imgUrls не указывает imgString.get(0), но imgString.get(imgString.size()-1).

Отредактировано: Попробуйте это:

PostKey=imgString.get(imgString.size()-1-i);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...