【发布时间】:2017-06-10 04:38:37
【问题描述】:
我创建了一张有一个列表视图的订单卡。最初我只显示了 2 项列表视图,但 onClick 箭头按钮我想显示完整的列表视图,之后如果我再次单击箭头,我只想显示 2 项。我能够显示完整的列表视图,但之后无法再次将其高度最小化到 100 dp,这与我之前在 xml 文件中的高度相同。
下面是我的代码,其中我有按钮并为其维护另一个适配器高度:-
Boolean isexpand= false
viewHolder.showhide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isexpand == true)
{
setListViewHeightBasedOnChildren(viewHolder.menulist);
}
else
{
setListViewHeightBasedOnChildren(100);
}
}
对于 listview,我正在设置另一个适配器,即 menuadapter:
viewHolder.listview.setAdapter(new MenuAdapterForAll(mContext,menuModels));
setListViewHeightBasedOnChildren(viewHolder.listview);
// 菜单适配器的代码
public class MenuAdapterForAll extends BaseAdapter
{
ArrayList<MenuItemModel> dataSet1;
Context mContextnew;
Typeface face, face1;
// View lookup cache
private static class ViewHolder {
ImageView image_menu_type;
TextView menu_item_name;
TextView menu_item_price;
TextView menu_item_qty;
CheckBox cbmenu;
}
public MenuAdapterForAll(Context applicationContext, ArrayList<MenuItemModel> menuModels) {
this.dataSet1=menuModels;
this.mContextnew=applicationContext;
}
@Override
public int getCount() {
return 2;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public int getItemViewType(int position) {
return position;
}
private int lastPosition = -1;
@Override
public View getView(int position, View vv, ViewGroup parent) {
// View vv= LayoutInflater.from(mContextnew).inflate(R.layout.adapter_listview_menuitems, null, false);
final ViewHolder viewHolder; // view lookup cache stored in tag
final View result;
final MenuItemModel data=dataSet1.get(position);
face = Typeface.createFromAsset(mContextnew.getAssets(), "fonts/Nunito-Regular.ttf");
face1 = Typeface.createFromAsset(mContextnew.getAssets(), "fonts/Rupee_Foradian_2.ttf");
if (vv == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(mContextnew);
vv = inflater.inflate(R.layout.adapter_listview_menuitems, parent, false);
viewHolder.menu_item_name=(TextView)vv.findViewById(R.id.menu_item_name);
viewHolder.menu_item_price=(TextView)vv.findViewById(R.id.menu_item_price);
viewHolder.menu_item_qty=(TextView)vv.findViewById(R.id.menu_item_qty);
viewHolder.image_menu_type =(ImageView) vv.findViewById(R.id.image_menu_type);
viewHolder.cbmenu =(CheckBox) vv.findViewById(R.id.cbmenu);
result=vv;
vv.setTag(viewHolder);
}
** 我无法在其他部分再次将高度设置为 100 dp。**
无法跟踪可能是什么问题,任何帮助都会非常有价值。
--谢谢!
【问题讨论】:
-
你试过布局参数吗?
-
我试过了,但是出错了。你能帮我吗,这真的很紧急@Rasi
-
简单的方法是有两个不同的列表。一个将只有两个项目,第二个将拥有所有项目。单击时,您可以通过调用 notifyDataSetChanged 更改列表和刷新适配器。
-
我已经这样做了,但我在每个列表项之前也有复选框,刷新后它的值会反射。因此,如果我有 2 个列表视图,并且如果我选中了列表视图的一个复选框,它将不会反映在另一个列表视图上。