की कुल ऊंचाई को मापने के लिए मुझे ListView की कुल ऊंचाई मापने की आवश्यकता है, लेकिन ऐसा लगता है कि मुझे लगातार गलत मान मिल रहे हैं। मैं इस कोड का उपयोग कर रहा हूं:एंड्रॉइड: ListView
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
MeasureSpec.AT_MOST);
Log.w("DESIRED WIDTH", String.valueOf(listAdapter.getCount()));
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
Log.w("HEIGHT"+i, String.valueOf(totalHeight));
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
समस्या यह है कि मुझे प्राप्त होने से बड़ी ऊंचाई प्राप्त हो रही है। प्रत्येक सूची वस्तु को अलग-अलग मापा जाता है और सभी वस्तुओं की ऊंचाई समान होती है, इसलिए यह निश्चित रूप से ऐसा नहीं करना चाहिए। प्रत्येक तत्व की ऊंचाई कम से कम इसकी वास्तविक ऊंचाई से दोगुना है।
अग्रिम धन्यवाद।
edit1:
मैं दो listviews है और वे दोनों 6-7 EditText क्षेत्रों के साथ आइटम नहीं हैं। यदि मैं EditText में मान लिखना/हटाना चाहता हूं तो मैं ListView को दिखा/छुपाता हूं। सबकुछ अच्छी तरह से काम करता है जब मैं सूची दिखाना चाहता हूं, इसमें बहुत सारी जगह होती है क्योंकि विधि गणना सूची दृश्य को बहुत अधिक जगह की आवश्यकता होती है। इसके कारण मेरे पास सूची दृश्य के नीचे बहुत खाली जगह है। आवश्यक तीन गुना अधिक खाली जगह की तरह।
http://stackoverflow.com/questions/2312683/calculate-the-size-of-a-list-view-or-: यह काम कर कोड है जो ListView ऊंचाई का है और पूर्ण आकार में ListView सेट है – RobinHood
कैसे-से-बताएं-पूरी तरह से विस्तार करें, धन्यवाद, लेकिन यह मेरे लिए काम नहीं करता है। मुझे लगता है कि मुझे यह समस्या है क्योंकि मेरे पास सिर्फ एक सूची दृश्य नहीं है। अंतरिक्ष कवरेज के साथ शायद कुछ संघर्ष है। – Cristiano