का उपयोग करके ListView में आइटम का मार्जिन सेट करने में असमर्थ मैं अपनी सूची दृश्य में आइटम्स के लिए चरम बाएं मार्जिन सेट करने का प्रयास कर रहा हूं। समस्या getView विधि में अपने कस्टम एडाप्टर में होता है:कस्टम एडाप्टर
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
Comment c = comments.get(position);
convertView = inflater.inflate(R.layout.list_item, null);
(TextView)convertView.findViewById(R.id.story)).setText(c.message);
}
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
lp.setMargins(0, c.getDepth() * 5, 0, 0);
convertView.setLayoutParams(lp);
return convertView;
}
हम list_item लेआउट जो अंदर कुछ textViews के साथ एक RelativeLayout है बढ़ा देते हैं। मैं फिर रिलेटिव लयआउट का उपयोग कर मार्जिन सेट करने का प्रयास करता हूं। लयआउट पैराम्स। मुझे इस पर क्लास कास्ट अपवाद मिलता है, लेकिन सामान्य लेआउट पैराम्स प्रकार में मार्जिन सेट करने के लिए कोई विधि नहीं है।
मार्जिन सेट करने के बारे में जाने का सबसे अच्छा तरीका क्या है?
यहाँ त्रुटि
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
at android.widget.ListView.setupChild(ListView.java:1779)
at android.widget.ListView.makeAndAddView(ListView.java:1748)
at android.widget.ListView.fillDown(ListView.java:670)
at android.widget.ListView.fillFromTop(ListView.java:727)
at android.widget.ListView.layoutChildren(ListView.java:1598)
at android.widget.AbsListView.onLayout(AbsListView.java:1273)
at android.view.View.layout(View.java:7192)
at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
at android.view.View.layout(View.java:7192)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
at android.view.View.layout(View.java:7192)
at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
at android.view.View.layout(View.java:7192)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1145)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1865)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
यह वास्तव में कनवर्टर व्यू लौटने के बाद होता है, हालांकि आप सही हैं कि मुझे पहले मार्जिन सेट करने की आवश्यकता है। मैंने अपनी पोस्ट में त्रुटि जोड़ा। –
मैंने इसका परीक्षण करने के लिए एक सरल ऐप बनाया, लेकिन इसे काम करने के लिए प्रबंधित नहीं किया। मेरा सुझाव है कि आप इसके बजाय व्यू पैडिंग का उपयोग करें, जो मुझे एक ही व्यवहार लगता है। convertView.setPadding (0, c.getDepth() * 5, 0, 0); क्षमा करने के लिए खेद है:/ – Astrorvald
दुर्भाग्य से मैं वास्तव में पूरे दृश्य को स्थानांतरित करना चाहता हूं, और पैडिंग केवल दृश्य के भीतर एक स्थान बनाता है। कोशिश करने के लिए धन्यवाद! –