Как сделать пользовательский и составной объект в Android?
После долгих поисков я нашел отличную статью, в которой описано, как создавать составные объекты. Рецепт прекрасно работает, Eclipse показывает его в пользовательских виджетах. Фантастика.
http://mobile.cs.fsu.edu/creating-a-simple-compound-component-in-android/
Только одна проблема, мне нужно несколько из них. Когда я добавил несколько элементов в макет, идентификатор ресурса для окружающего слоя / объекта наталкивается, как и ожидалось; то есть новый объект получает новые идентификаторы автоматически. Проблема в том, что компоненты внутри основного макета не делают; поэтому, если мне нужно использовать finViewById, чтобы получить представление для внутренних компонентов, все они имеют одинаковый идентификатор. Кто-нибудь знает, как автоматически назначать разные идентификаторы для внутренних компонентов сложного виджета? Я бы попытался назначить их вручную, но Eclipse не показывает внутреннюю структуру составного объекта; так что никакой помощи там нет.
- в ответ на ответ Ксавера
Да, по крайней мере, я так думаю. Если я буду следовать примеру в ссылке, у меня будет что-то похожее; теперь я вижу, что вы говорите, я получил представления, просто добавив findviewbyId в пользовательский класс, так как
public class HorizontalNumberPicker extends LinearLayout {
public HorizontalNumberPicker(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater layoutInflater = (LayoutInflater)context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(R.layout.horizontal_number_picker, this);
View v = findViewbyID(R.id.btn_minus); //
}
}
То, что я не могу понять, и я, скорее всего, ошибаюсь, это как привязать мой код к двум объектам, что следует примеру в ссылке
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<example.example.HorizontalNumberPicker
android:id ="@+id/horizontal_number_picker"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content" />
<example.example.HorizontalNumberPicker2
android:id ="@+id/horizontal_number_picker"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content" />
</FrameLayout>
Откуда знает, что конструктор HorizontalNumberPicker связан с объектом horizontal_number_picker или horizontal_number_picker2?
если в моей деятельности я добавляю
HorizontalNumberPicker obj1 = HorizontalNumberPicker (this,null);
какие ссылки на Horizontal_Number_Picker или Horizontal_Number_Picker2?
Кстати, как я могу передать атрибут?