2017-01-25 1 views
0

Ich habe eine Auftragskarte mit einer Listenansicht erstellt. Anfangs habe ich nur 2 Einträge in der Listenansicht angezeigt, aber auf Klick auf die Pfeilschaltfläche möchte ich die vollständige Listenansicht anzeigen und danach, wenn ich noch einmal auf den Pfeil klicke, möchte ich nur 2 Einträge anzeigen. Ich bin in der Lage, vollständige Liste zu zeigen, aber danach nicht in der Lage, es auf 100 dp wieder zu minimieren, die ich in XML-Datei früher habe.So begrenzen Sie die ListView-Höhe auf Knopfdruck

Unten ist mein Code, wo ich Taste und eine andere Adapter Höhe halten für sie: -:

viewHolder.listview.setAdapter(new MenuAdapterForAll(mContext,menuModels)); 
      setListViewHeightBasedOnChildren(viewHolder.listview); 

 Boolean isexpand= false 

    viewHolder.showhide.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     if(isexpand == true) 
     { 
     setListViewHeightBasedOnChildren(viewHolder.menulist); 
     } 

     else 

     { 
     setListViewHeightBasedOnChildren(100); 
     } 


     } 

Und für Listview ich ein anderer Adapter dh menuadapter bin Einstellung // Code für diesen Menüadapter

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); 
    } 

** Ich bin nicht in der Lage, Höhe wieder auf 100 dp in sonst Teil zu setzen. **

Unfähig zu verfolgen, was das Problem sein könnte, wäre jede Hilfe wirklich sehr wertvoll.

- Vielen Dank!

+0

Haben Sie das Layout params versucht? – Rahul

+0

Ich habe versucht, aber Fehler bekommen. Können Sie mir bitte helfen, es ist wirklich dringend @Rasi –

+0

Einfache Möglichkeit ist, zwei verschiedene Liste zu haben. einer wird nur zwei Gegenstände haben und der zweite wird alle Gegenstände haben. Beim Klicken können Sie den Listen- und Aktualisierungsadapter ändern, indem Sie notifyDataSetChanged aufrufen. – Piyush

Antwort

0

mit getCount von Listview-Adapter-Klasse Methode Versuchen Sie stattdessen die Höhe der Einstellung

public int getCount() { 
    return noOfRows; 
} 
0

Ich glaube, Sie mögen dieses

@Override 
public int getCount() { 
    if(list.size() > 2 && !isexpand){ 
     return 2; 
    } 
    else 
    { 
     return list.size(); 
    } 
} 
+0

Ich meine ist, dass ich Knopf in einem Adapter habe und in einem anderen Adapter aufliste. Wie kann ich das machen. –

+0

@MukeshMishra, können Sie bitte etwas Code für beide Adapter hinzufügen, wo Sie versucht haben, die Höhe zu setzen? \ –

+0

Ich habe Code darin hinzugefügt @Mayur –

0

tun sollten, können Sie wie tun:

viewHolder.showhide.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     notifyDataSetChanged(); 

    } 

und in getCount Methode des Adapters:

0

ich denke, für Checkbox Problem mit dem Hinzufügen von seinen beiden Methoden lösen:

@Override 
public int getViewTypeCount() { 

    return getCount(); 
} 

@Override 
public int getItemViewType(int position) { 

    return position; 
} 
Verwandte Themen