Come get un ListView non scrollabile?

Vorrei un ListView non scrollabile e mostrare l'integer ListView. È perché il mio schermo integer è uno ScrollView e invio i widget con un RelativeLayout, quindi non ho bisogno di scrollare ListView.

Ho impostato il mio ui con codice, non con xml.

  • Client Google Api a volte NULL in onConnected
  • App per auto aggiornamento
  • Come disegnare la vista in cima alla tastiera soft come WhatsApp?
  • "Java.exe" è uscito dal codice 2
  • misuratore acustico android
  • createOrUpdate () crea sempre una nuova voce nel database con ORMLite
  • Ho usato listView.setScrollContainer(false) , ma non funziona, non capisco perché.

    Grazie.

    6 Solutions collect form web for “Come get un ListView non scrollabile?”

    Non mettere un elenco di liste in una tabella di scorrimento, non funziona. Se si desidera un elenco di elementi che non si scorrano, viene chiamato linearlayout.

    La risposta corretta è qui.

    Basta assegnare questo ascoltatore al tuo ListView :

      listView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { return true; // Indicates that this has been handled by you and will not be forwarded further. } return false; } }); 

    Ho trovato una soluzione molto semplice per questo. Basta get l'adattatore della list e calcolare la dimensione quando vengono visualizzati tutti gli elementi. Il vantaggio è che questa soluzione funziona anche all'interno di uno ScrollView.

    Esempio:

     public void justifyListViewHeightBasedOnChildren (ListView listView) { ListAdapter adapter = listView.getAdapter(); if (adapter == null) { return; } ViewGroup vg = listView; int totalHeight = 0; for (int i = 0; i < adapter.getCount(); i++) { View listItem = adapter.getView(i, null, vg); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams par = listView.getLayoutParams(); par.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1)); listView.setLayoutParams(par); listView.requestLayout(); } 

    Chiamare questa function che passa sopra l'object ListView:

     justifyListViewHeightBasedOnChildren(myListview); 

    La function mostrata in precedenza è una modifica di un post in: Distriggers lo scorrimento in visualizzazione di elenco

    Si prega di call questa function dopo aver impostato l'adattatore nell'elenco di visualizzazione. Se la dimensione delle voci nella scheda è cambiata, è necessario call anche questa function.

    A seconda di ciò che esattamente si sta tentando di fare, è ansible risolvere il problema facendo ScrollView lo ScrollView e utilizzando invece addHeaderView(View) e addFooterView(View) ListView .

    Sono venuto in su con BaseAdapterUnscrollable. Fondamentalmente aggiunge semplicemente viste al contenitore ViewGroup. L'implementazione è un po 'come BaseAdapter. È abbastanza conveniente se si utilizzano alcuni elenchi non scrollabili come quello in te progetto.

    In onCreate:

      PeopleAdapter peopleAdapter = new PeopleAdapter(this, personList, containerPeopleLinearLayout); peopleAdapter.setOnItemClickListener(this); peopleAdapter.drawItems(); 

    Il tuo adattatore specifico:

     public class PeopleAdapter extends BaseAdapterNonScrollable<Person> { public PeopleAdapter(Context context, List<Person> items, LinearLayout container) { super(context, items, container); } @Override public View getView(View container, Person person) { TextView textView = (TextView) LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_1, null); textView.setText(person.getName()); return textView; } 

    }

    BaseAdapterNonScrollable (solo copia):

     public abstract class BaseAdapterNonScrollable<T> implements NonScrollable, OnItemClick { public Context context; private ViewGroup containerViewGroup; private List<T> itemObjectList; private OnItemClick itemClickListener; public BaseAdapterNonScrollable(Context context, List<T> items, ViewGroup containerViewGroup) { this.context = context; this.itemObjectList = items; this.containerViewGroup = containerViewGroup; } @Override public void drawItems() { if (containerViewGroup == null || itemObjectList.size() == 0) { return; } if (containerViewGroup.getChildCount() > 0) { containerViewGroup.removeAllViews(); } //draw all items for (int i = 0; i < itemObjectList.size(); i++) { final int position = i; final View itemView = getView(containerViewGroup, itemObjectList.get(i)); if (itemView != null) { containerViewGroup.addView(itemView); //handle item click event itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (itemClickListener != null) { itemClickListener.onItemClick(itemObjectList, position); } } }); } } } public void setOnItemClickListener(OnItemClick onItemClick) { this.itemClickListener = onItemClick; } public abstract View getView(View container, T itemObject); @Override public void onItemClick(List<?> itemList, int position) { } 

    }

    interfacce

     public interface NonScrollable { void drawItems(); } public interface OnItemClick { void onItemClick(List<?> itemList, int position); } 

    per distriggersre lo scorrimento è ansible utilizzare listview.setEnabled(false)

    Questo distriggers anche le selezioni di row.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.