Alertdialog正在膨胀的RecyclerView android
我试图使用setView(…)将视图添加到我的材质对话框中,我希望我的膨胀视图如下所示 也就是说,recycler视图将始终占据屏幕的大约2/3。这包括何时为空,何时为空空间,何时有多行数据,何时可以滚动 这是我的目标。但是,当我尝试在对话框中放大此视图时,我得到以下结果 该屏幕表示占据屏幕大部分的空recyclerview 这是密码 //添加到对话框Alertdialog正在膨胀的RecyclerView android,android,android-alertdialog,android-recyclerview,Android,Android Alertdialog,Android Recyclerview,我试图使用setView(…)将视图添加到我的材质对话框中,我希望我的膨胀视图如下所示 也就是说,recycler视图将始终占据屏幕的大约2/3。这包括何时为空,何时为空空间,何时有多行数据,何时可以滚动 这是我的目标。但是,当我尝试在对话框中放大此视图时,我得到以下结果 该屏幕表示占据屏幕大部分的空recyclerview 这是密码 //添加到对话框 mMaterialDialog = new MaterialDialog(mContext) .setView
mMaterialDialog = new MaterialDialog(mContext)
.setView(new ISEQDialog(mContext))
//.setBackgroundResource(R.drawable.dublin_watchlist)
.setPositiveButton("OK", new View.OnClickListener() {
@Override
public void onClick(View v) {
mMaterialDialog.dismiss();
}
});
mMaterialDialog.show();
}
}))
//看法
public class ISEQDialog extends FrameLayout{
SeekBar mBuySeekBar;
TextView mStockHeading;
Context mContext;
View mView;
RecyclerView mStockDataList;
public ISEQDialog(Context context) {
super(context);
this.mContext = context;
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(inflater != null){
mView = inflater.inflate(R.layout.stock_dialog, null);
}
mStockDataList = (RecyclerView) mView.findViewById(R.id.rv_stock_data_list);
//
mStockDataList.setAdapter(new ISEQDialofRecyclerViewAdapter());
LinearLayoutManager layoutManager = new LinearLayoutManager(mContext);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
layoutManager.scrollToPosition(0);
mStockDataList.setLayoutManager(layoutManager);
//mStockDataList.addItemDecoration(new DividerItemDecoration(mContext.getDrawable(R.drawable.divider)));
addView(mView);
}
}
//循环水泵
public class ISEQDialofRecyclerViewAdapter extends RecyclerView.Adapter<ISEQDialofRecyclerViewAdapter.ViewHolder>{
@Override
public ISEQDialofRecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(ISEQDialofRecyclerViewAdapter.ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
}
}
}
公共类IseQDialOfRecycleServiceAdapter扩展了RecyclerView.Adapter{
@凌驾
public ISEQdialOfRecycleServiceAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
返回null;
}
@凌驾
BindViewHolder上的公共无效(ISEQdialOfRecycleriveAdapter.ViewHolder,int位置){
}
@凌驾
public int getItemCount(){
返回0;
}
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
公共视图持有者(视图项视图){
超级(项目视图);
}
}
}
//XML
这个问题与
RecyclerView
有关,据我所知,当它为空时,它会填充布局,除非您给出固定的布局高度。
有一个技巧,就是在创建alertDialog
之前检查项目列表。如果为空,则创建警报对话框
,而不创建回收视图
,只创建警告文本。否则,创建自定义的alertDialog
这个问题与RecyclerView
有关,我知道,当它为空时会填充布局,除非您指定固定的布局高度。
有一个技巧,就是在创建alertDialog
之前检查项目列表。如果为空,则创建警报对话框
,而不创建回收视图
,只创建警告文本。否则,创建自定义的警报对话框
我在尝试将回收器视图添加到对话框时遇到了相同的问题。
当我尝试排除故障时,我意识到只有回收器视图适配器的构造函数被调用并停止。其余的方法如getItemCount()、onCreateViewHolder()和onBindViewHolder()不会被调用
所以我做了下面的事情
1) 我将回收视图替换为线性布局。
2) 在代码中将线性布局引用为视图支架。
3) 然后,我手动迭代了要传递给recycler视图的列表,然后我扩展了单行xml文件,引用了视图并在其上设置了文本。
4) 我将视图添加到视图保持架并显示对话框。它起作用了
5) 此操作会扩大视图,因为我们不会回收任何东西,因此如果要显示的项目低于10-15,您也可以使用此操作,否则会稍微影响应用程序的性能
活动中
Dialog myTestDialog = new Dialog(getActivity());
myTestDialog.setContentView(R.layout.order_details_orders_to_deliver);
//get the layout group
ViewGroup layout = (ViewGroup) myTestDialog.findViewById(R.id.order_details_recycler_view);
List<OrderItemDetails> orderItemDetailsList = mDatabaseOperationsAdapter.getOrderDetail(ordersToDeliver.getOrderId());
for (int x = 0; x < orderItemDetailsList.size(); x++) {
OrderItemDetails orderItemDetails = orderItemDetailsList.get(x);
View view = inflater.inflate(R.layout.order_details_row, null);
TextView itemName = (TextView) view.findViewById(R.id.order_details_item_name);
TextView quantity = (TextView) view.findViewById(R.id.order_details_item_quantity);
TextView itemTotal = (TextView) view.findViewById(R.id.order_details_item_total);
itemName.setText(orderItemDetails.getProductName());
quantity.setText(String.valueOf(orderItemDetails.getProductQuantity()));
itemTotal.setText(String.valueOf(orderItemDetails.getTotalPrice()));
layout.addView(view);
}
myTestDialog.show();
Dialog myTestDialog=新建对话框(getActivity());
myTestDialog.setContentView(R.layout.order\u details\u orders\u to\u deliver);
//获取布局组
视图组布局=(视图组)myTestDialog.findViewById(R.id.order\u details\u recycler\u view);
List orderItemDetailsList=mDatabaseOperationsAdapter.getOrderDetail(ordersToDeliver.getOrderId());
对于(int x=0;x
注意:order\u details\u recycler\u视图是线性布局而不是recycler视图,因为我将其更改为保持id不变的线性布局
列表orderItemDetailsList是要传递给适配器的列表。我在尝试将回收器视图添加到对话框时遇到了相同的问题。
当我尝试排除故障时,我意识到只有回收器视图适配器的构造函数被调用并停止。其余的方法如getItemCount()、onCreateViewHolder()和onBindViewHolder()不会被调用
所以我做了下面的事情
1) 我将回收视图替换为线性布局。
2) 在代码中将线性布局引用为视图支架。
3) 然后,我手动迭代了要传递给recycler视图的列表,然后我扩展了单行xml文件,引用了视图并在其上设置了文本。
4) 我将视图添加到视图保持架并显示对话框。它起作用了
5) 此操作会扩大视图,因为我们不会回收任何东西,因此如果要显示的项目低于10-15,您也可以使用此操作,否则会稍微影响应用程序的性能
活动中
Dialog myTestDialog = new Dialog(getActivity());
myTestDialog.setContentView(R.layout.order_details_orders_to_deliver);
//get the layout group
ViewGroup layout = (ViewGroup) myTestDialog.findViewById(R.id.order_details_recycler_view);
List<OrderItemDetails> orderItemDetailsList = mDatabaseOperationsAdapter.getOrderDetail(ordersToDeliver.getOrderId());
for (int x = 0; x < orderItemDetailsList.size(); x++) {
OrderItemDetails orderItemDetails = orderItemDetailsList.get(x);
View view = inflater.inflate(R.layout.order_details_row, null);
TextView itemName = (TextView) view.findViewById(R.id.order_details_item_name);
TextView quantity = (TextView) view.findViewById(R.id.order_details_item_quantity);
TextView itemTotal = (TextView) view.findViewById(R.id.order_details_item_total);
itemName.setText(orderItemDetails.getProductName());
quantity.setText(String.valueOf(orderItemDetails.getProductQuantity()));
itemTotal.setText(String.valueOf(orderItemDetails.getTotalPrice()));
layout.addView(view);
}
myTestDialog.show();
Dialog myTestDialog=新建对话框(getActivity());
myTestDialog.setContentView(R.layout.order\u details\u orders\u to\u deliver);
//获取布局组
视图组布局=(视图组)myTestDialog.findViewById(R.id.order\u details\u recycler\u view);
List orderItemDetailsList=mDatabaseOperationsAdapter.getOrderDetail(ordersToDeliver.getOrderId());
对于(int x=0;x