Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Bagi yang melakukan implementasi ScrollView dan ListView dalam satu layout di android, akan menyebabkan scrollview tidak berfungsi atau tampilannya tidak sesuai dengan diharapkan. Ini dikarenakan keduanya memiliki fungsi yang sama, yaitu scroll.

Namun, anda dapat mengatasi dengan sejumlah cara agar dapat berfungsi, yaitu :

1. code 1:

ListView lv = (ListView) findViewById(R.id.layout_lv);
lv.setOnTouchListener(new OnTouchListener() {
    // Setting on Touch Listener for handling the touch inside ScrollView
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    // Disallow the touch request for parent scroll on touch of child view
    v.getParent().requestDisallowInterceptTouchEvent(true);
    return false;
    }
});

Kode diatas akan scrollview dan listview anda berfungsi, namun pada listview layout_height nya hanya menampilkan satu baris data yang dapat discroll.

2. code 2 :

ListView list = (ListView) view.findViewById(R.id.ls);
setListViewHeightBasedOnChildren(list);

methode setListViewHeightBasedOnChilder :

/**** Method for Setting the Height of the ListView dynamically.
 **** Hack to fix the issue of not showing all the items of the ListView
 **** when placed inside a ScrollView  ****/
public static void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null)
        return;

    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.UNSPECIFIED);
    int totalHeight = 0;
    View view = null;
    for (int i = 0; i < listAdapter.getCount(); i++) {
        view = listAdapter.getView(i, view, listView);
        if (i == 0)
            view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, LayoutParams.WRAP_CONTENT));

        view.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
        totalHeight += view.getMeasuredHeight();
    }
    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
    listView.requestLayout();
}

sementara code 2, akan membuat layout_height menjadi dinamis dibandingkan code 1.

selamat mencoba 🙂

Related Posts
ReverseTethering : Menggunakan Koneksi Internet dari Laptop Ke HP

Menggunakan koneksi internet HP ke Laptop atau perangkat lainnya merupakan hal yang biasa, yaitu dengan menggunakan tethering/hotspot yang ada di Read more

Menangani Error MySQL : Too Many Connections

Jika anda mengalami pesan error "connect to mysql server 127.0.0.1: Too many connections" di file log, atau sejenisnya, maka itu Read more

Tips dan Trik Whatsapp WA

Bagi pengguna whatsapp kemungkinan kebanyakan dari kita hanya mengetahui fitur yang umum digunakan. Padahal masih ada beberapa tips dan trik Read more

Fix Unable Create Directory di WordPress

Jika anda mengalami error ketika mengupload gambar atau media yang berada di menu media di wordpress, seperti : Unable to Read more

Tagged : # # #

Leave a Reply

Your email address will not be published. Required fields are marked *