Note that there are some explanatory texts on larger screens.

plurals
  1. POListView in ScrollView potential workaround
    primarykey
    data
    text
    <p>I've done all of the research on the matter. I know that Google thinks it's pointless and that the developers, know that it's not. I also know that there is no known workaround, but I know that I am close to making one. The user DougW posted this code:</p> <pre><code>public class Utility { public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i &lt; listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); } } </code></pre> <p>Which almost gets the job done for me. But when I try it, I get a NullPointer exception at the listItem.measure(0, 0) line. The listItem itself is initialized, but the method throws the exception anyway. Please tell me how I can fix this.</p> <p>Here is my code:</p> <pre><code>public class ExpenseReportsActivity extends Activity { private ListView lvReports; private ExpenseReportListAdapter adapter; private Button btnSend; private Button btnCancel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.expensereports); lvReports = (ListView)findViewById(R.id.lv_reports); lvReports.setBackgroundResource(R.drawable.shape_expense_report_list); ColorDrawable cd = new ColorDrawable(0xFFffffff); lvReports.setDivider(cd); lvReports.setDividerHeight(1); adapter = new ExpenseReportListAdapter(this); lvReports.setAdapter(adapter); int totalHeight = 0; for (int i = 0; i &lt; adapter.getCount(); i++) { View listItem = adapter.getView(i, null, lvReports); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = lvReports.getLayoutParams(); params.height = totalHeight + (lvReports.getDividerHeight() * (adapter.getCount() - 1)); lvReports.setLayoutParams(params); } } </code></pre> <p>Another workaround I am working on is using my custom view's onWindowFocusChanged method. It tells the exacts height of the view. The problem is that the event isn't fired while I am still in my Activiy's onCreate method, nor in my Activity's onWindowFocusChanged method. I tried a custom event, but it never fired (it was placed inside my custom view's onWindowFocusChanged method and the listener was in my Activity's onWindowFocusChanged method).</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload