gpt4 book ai didi

java - 在 Android 中以编程方式了解设备屏幕尺寸?

转载 作者:行者123 更新时间:2023-11-30 10:55:26 26 4
gpt4 key购买 nike

请查看相关Question .我从评论中了解了一些提示,现在以一种新的方式表达。

我正在使用带有 StaggeredGridView 适配器的 RecyclerView 来显示数据。我如何知道当前设备需要加载多少项才能适合整个屏幕?

过程

  • 确定屏幕尺寸
  • 确定需要加载多少项以适合全屏
  • 从服务器获取包含项目数的数据
  • 展示它们
  • 当用户向下滚动时,设备会获取相同数量的项目等等。

问题

我无法理解如何完成前两点。

适配器代码

public class StaggeredGridAdapter extends RecyclerView.Adapter<StaggeredGridAdapter.StaggeredGridView> {

private Context context;
private String INTENT_VALUE = "warehouse";
private List<Warehouse> warehouses = new ArrayList<Warehouse>();
private AppDelegate app;
int size;

public StaggeredGridAdapter(Context context) {
this.context = context;
app = (AppDelegate) context;
}

public void addItems(List<Warehouse> response) {
size = response.size();
warehouses = response;
}

@Override
public StaggeredGridView onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.grid_item, parent, false);
StaggeredGridView staggeredGridView = new StaggeredGridView(layoutView);
return staggeredGridView;
}

@Override
public void onBindViewHolder(StaggeredGridView holder, int position) {
holder.textView.setText(warehouses.get(position).getFace());
}

@Override
public int getItemCount() {
return size;
}

class StaggeredGridView extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView textView;

public StaggeredGridView(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.img_name);
itemView.setOnClickListener(this);

}

@Override
public void onClick(View v) {
Intent intent = new Intent(context, WareHouseDetailActivity.class);
intent.putExtra(INTENT_VALUE, warehouses.get(getAdapterPosition()));
v.getContext().startActivity(intent);
}
}
}

向适配器填充数据的代码

mRecyclerView = (RecyclerView) mActivity.findViewById(R.id.staggering_grid);
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
mAdapter = new StaggeredGridAdapter(mContext);
mAdapter.addItems(response);
mRecyclerView.setAdapter(mAdapter);

最佳答案

至于找到高度和宽度,您可以使用 DisplayMetrics

final DisplayMetrics displayMetrics = this.getApplicationContext().getResources().getDisplayMetrics();

displayMetrics 将提供高度、宽度和密度。使用单个 View(或行)的高度和总高度来计算项目数。

为什么要精确 项数,如果是服务器调用,您可以根据设备大小粗略估计项数。另外,我认为最好让 服务器发送的项目数 保持不变并且不依赖于设备高度。如果您收到的项目数量超过了屏幕可以容纳的项目数量,那么用户无论如何都可以滚动查看它们。

关于java - 在 Android 中以编程方式了解设备屏幕尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33348646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com