Ich entwickle ein benutzerdefiniertes Layout, das nur wenige Attribute hat. Attrs:Der beste Weg, um Ansichten zu füllen
<declare-styleable name="CustomLayout"> //other attr... <attr name="data_set" format="reference"/> </declare-styleable>
Datensatz ist nur ein String-Array, wonach fülle ich mein Layout von bevöl Ansichten:
private Option[] mOptions; // just an array for filing content
public CustomLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray array = context
.obtainStyledAttributes(attrs, R.styleable.CustomLayout);
int arrayId = array.getResourceId(R.styleable._data_set, -1);
if (arrayId != -1) {
array = getResources().obtainTypedArray(arrayId);
mOptions = new Option[array.length()];
for (int index = 0; index < array.length(); index++) {
mOptions[index] = new Option();
mOptions[index].setLabel(array.getString(index));
}
populateViews();
}
array.recycle();
}
private void populateViews() {
if (mOptions.length > 0) {
for (int index = 0; index < mOptions.length; index++) {
final Option option = mOptions[index];
TextView someTextView = (TextView) LayoutInflater.from(getContext())
.inflate(R.layout.some_layout, this, false);
//other initialization stuff
addView(someTextView);
}
}
Wo ist der beste Platz für Ansichten bevölkern? Wie ich weiß addView() löst requestLayout() und invalidate() - und das ist nicht der beste Weg, dies für mehrere Elemente zu tun, nicht wahr? Also, was soll ich tun, sollte ich Adapter-basierten Ansatz verwenden?
Also, auch wenn ich etwas wie ListView implementieren werde, wo ich bekommen werde Sicht innen onMeasure() - das ist nicht meine aktuelle Implementierung zu optimieren? Oder vielleicht können Sie andere Ansätze empfehlen? –