मैं इस कोड है:Android: Linearlayout का विस्तार करें, लेकिन RelativeLayout के लिए इसकी आवश्यकता है। डुप्लिकेट कोड अपरिहार्य है?
public class CopyOfLinearLayoutEntry extends LinearLayout implements Checkable {
private CheckedTextView _checkbox;
private Context c;
public CopyOfLinearLayoutEntry(Context context) {
super(context);
this.c = context;
setWillNotDraw(false);
}
public CopyOfLinearLayoutEntry(Context context, AttributeSet attrs) {
super(context, attrs);
this.c = context;
setWillNotDraw(false);
}
@Override
protected void onDraw(Canvas canvas) {
Paint strokePaint = new Paint();
strokePaint.setARGB(200, 255, 230, 230);
strokePaint.setStyle(Paint.Style.STROKE);
strokePaint.setStrokeWidth(12);
Rect r = canvas.getClipBounds();
Rect outline = new Rect(1, 1, r.right - 1, r.bottom - 1);
canvas.drawLine(r.left, r.top, r.right, r.top, strokePaint);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
// find checked text view
int childCount = getChildCount();
for (int i = 0; i < childCount; ++i) {
View v = getChildAt(i);
if (v instanceof CheckedTextView) {
_checkbox = (CheckedTextView) v;
}
}
}
@Override
public boolean isChecked() {
return _checkbox != null ? _checkbox.isChecked() : false;
}
@Override
public void setChecked(boolean checked) {
if (_checkbox != null) {
_checkbox.setChecked(checked);
}
}
@Override
public void toggle() {
if (_checkbox != null) {
_checkbox.toggle();
}
}
}
अब मैं भी RelativeLayout के लिए एक संस्करण की आवश्यकता है, तो मैं वर्ग फ़ाइल नकल और "RelativeLayout फैली" के साथ "फैली LinearLayout" होगा। मुझे लगता है कि यह बुरा होगा, क्योंकि मुझे कोई डुप्लिकेट कोड नहीं चाहिए।
मैं अपने लक्ष्य को प्राप्त करने के बारे में कैसे जाउंगा, यह देखते हुए कि जावा एकाधिक विरासत की अनुमति नहीं देता है?
मैंने रचना डिजाइन पैटर्न के बारे में कुछ पढ़ा है, लेकिन मुझे यकीन नहीं है कि इसे कैसे कार्यान्वित किया जाए।
शायद कोई मुझे इस समस्या को हल करने के तरीके के बारे में एक प्रारंभिक बिंदु दे सकता है?