网格图像适配器排序
Grid image adapter sort
我用图像构建了一些 gridView,一切正常。
我有一组图像,我可以单击它们中的每一个,然后根据需要继续进行另一个 activity。
问题是 - 当我将新图像添加到适配器时 - 它被添加到堆栈的末尾。
我怎样才能重新排列图像的显示从新到旧而不是像现在这样从旧到新。
(我自己做了一些事情(正如你在评论中看到的那样),它显示得像我想要的但是当我点击图片时我得到了错误的图片):
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.");
}
});
}
@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);
我用图像构建了一些 gridView,一切正常。 我有一组图像,我可以单击它们中的每一个,然后根据需要继续进行另一个 activity。 问题是 - 当我将新图像添加到适配器时 - 它被添加到堆栈的末尾。 我怎样才能重新排列图像的显示从新到旧而不是像现在这样从旧到新。 (我自己做了一些事情(正如你在评论中看到的那样),它显示得像我想要的但是当我点击图片时我得到了错误的图片):
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.");
}
});
}
@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);