Java 交错网格布局用于从实时数据库加载未显示的图像
我已经创建了一个交错网格布局来从Firebase加载图像,但它不能正常工作。 使用毕加索加载图像并使用实时数据库读取项目。。。 使用日志时,在日志cat中显示无错误。 仍然显示空白页作为空白活动Java 交错网格布局用于从实时数据库加载未显示的图像,java,android,firebase-realtime-database,staggeredgridlayout,Java,Android,Firebase Realtime Database,Staggeredgridlayout,我已经创建了一个交错网格布局来从Firebase加载图像,但它不能正常工作。 使用毕加索加载图像并使用实时数据库读取项目。。。 使用日志时,在日志cat中显示无错误。 仍然显示空白页作为空白活动 // private List<PostItem> postItems; public static List<PostItem> postItems; ////////////// private OnItemClickListener mListener; public i
// private List<PostItem> postItems;
public static List<PostItem> postItems;
//////////////
private OnItemClickListener mListener;
public interface OnItemClickListener {
void onItemClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}
///////////////
public PostsAdapter(List<PostItem> postItems) {
PostsAdapter.postItems = postItems;
}
@NonNull
@Override
public PostViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new PostViewHolder(
LayoutInflater.from(parent.getContext()).inflate(
R.layout.post_item_container,parent,false
)
);
}
@Override
public void onBindViewHolder(@NonNull PostViewHolder holder, int position) {
holder.setPostImage(postItems.get(position));
}
@Override
public int getItemCount() {
return postItems.size();
}
class PostViewHolder extends RecyclerView.ViewHolder{
RoundedImageView postImageView;
PostViewHolder(@NonNull View itemView) {
super(itemView);
postImageView = itemView.findViewById(R.id.imagePost);
///////
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
int position = getAdapterPosition();
//if (position != RecyclerView.NO_POSITION) {
// mListener.onItemClick(position);
//}
}
});
///////
}
void setPostImage(PostItem postItem){
//load image here in picasso.
Picasso.get().load(postItem.getPit()).into(postImageView);
// postImageView.setImageResource(postItem.getImage());
}
}
}
这是因为您先将适配器设置为RecyclerView,然后再更新列表 我假设之前在列表中手动添加图像并设置适配器(参考注释代码)时,它工作正常 试试这个:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
//
databaseL = FirebaseDatabase.getInstance().getReference("galumon");
postItem = new PostItem();
final RecyclerView postRecyclerView = findViewById(R.id.postRecyclerview);
postRecyclerView.setLayoutManager(
new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)
);
postItems = new ArrayList<>();
//set the adapter
PostsAdapter postsAdapter = new PostsAdapter(postItems);
postRecyclerView.setAdapter(postsAdapter);
/*
List<PostItem> postItems = new ArrayList<>();
postItems.add(new PostItem(R.drawable.a));
postItems.add(new PostItem(R.drawable.b));
postItems.add(new PostItem(R.drawable.c));
postItems.add(new PostItem(R.drawable.d));
postItems.add(new PostItem(R.drawable.e));
postItems.add(new PostItem(R.drawable.f));
postItems.add(new PostItem(R.drawable.g));
postItems.add(new PostItem(R.drawable.h));
postItems.add(new PostItem(R.drawable.i));
*/
//
databaseL.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot ds : snapshot.getChildren()) {
postItem = ds.getValue(PostItem.class);
postItems.add(new PostItem(postItem.getPit()));
}
//notify the adapter
postsAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
//
databaseL=FirebaseDatabase.getInstance().getReference(“galumon”);
positem=新positem();
最终RecyclerView postRecyclerView=findViewById(R.id.postRecyclerView);
postRecyclerView.setLayoutManager(
新的StaggedGridLayoutManager(2,StaggedGridLayoutManager.VERTICAL)
);
positems=newarraylist();
//设置适配器
PostsAdapter PostsAdapter=新的PostsAdapter(positems);
postRecyclerView.setAdapter(postsAdapter);
/*
List positems=new ArrayList();
添加(新的positem(R.drawable.a));
添加(新的positem(R.drawable.b));
添加(新的positem(R.drawable.c));
添加(新的positem(R.drawable.d));
添加(新的positem(R.drawable.e));
添加(新的positem(R.drawable.f));
添加(新的positem(R.drawable.g));
添加(新的positem(R.drawable.h));
添加(新的positem(R.drawable.i));
*/
//
databaseL.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
对于(DataSnapshot ds:snapshot.getChildren()){
positem=ds.getValue(positem.class);
添加(新的positem(positem.getPit());
}
//通知适配器
postsAdapter.notifyDataSetChanged();
}
@凌驾
已取消公共void(@NonNull DatabaseError){
}
});
}
此代码中的哪些内容没有按您期望的方式工作?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
//
databaseL = FirebaseDatabase.getInstance().getReference("galumon");
postItem = new PostItem();
final RecyclerView postRecyclerView = findViewById(R.id.postRecyclerview);
postRecyclerView.setLayoutManager(
new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)
);
postItems = new ArrayList<>();
//set the adapter
PostsAdapter postsAdapter = new PostsAdapter(postItems);
postRecyclerView.setAdapter(postsAdapter);
/*
List<PostItem> postItems = new ArrayList<>();
postItems.add(new PostItem(R.drawable.a));
postItems.add(new PostItem(R.drawable.b));
postItems.add(new PostItem(R.drawable.c));
postItems.add(new PostItem(R.drawable.d));
postItems.add(new PostItem(R.drawable.e));
postItems.add(new PostItem(R.drawable.f));
postItems.add(new PostItem(R.drawable.g));
postItems.add(new PostItem(R.drawable.h));
postItems.add(new PostItem(R.drawable.i));
*/
//
databaseL.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot ds : snapshot.getChildren()) {
postItem = ds.getValue(PostItem.class);
postItems.add(new PostItem(postItem.getPit()));
}
//notify the adapter
postsAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}