У меня есть ViewFlipper, который содержит макеты.
Есть ли способ подключить класс для управления каждым макетом отдельно?
Вид вроде setContentView(R.layout.main);
, но я не уверен, как ссылаться на 3 разных макета в коде.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" >
<ListView android:layout_width="wrap_content" android:id="@+id/ListView" android:layout_height="220dp"></ListView>
<ViewFlipper android:id="@+id/ViewFlipper" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:id="@+id/LinearLayoutST" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/icon"></ImageView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayoutChart" android:layout_height="fill_parent" android:layout_width="fill_parent">
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="View 2"></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayoutDetails" android:layout_height="fill_parent" android:layout_width="fill_parent">
<TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="View 3"></TextView>
</LinearLayout>
</ViewFlipper>
</LinearLayout>
Вы можете сделать это двумя способами:
Прикрепите соответствующий экземпляр класса к виду или макету, который вы хотите манипулировать. Этого достаточно, если вы просто хотите использовать обычные вызовы, установить OnClickListeners и т.д.:
LinearLayout layoutChart = (LinearLayout) findViewById (R.id.LinearLayoutChart);
Если вам необходимо переопределить поведение класса по умолчанию (например, подкласс), создайте расширенный класс:
public class LinearLayoutChart расширяет LinearLayout { ...}
Обязательно реализуйте все родительские конструкторы (даже если вы просто переходите к вызову super...), особенно те, которые принимают атрибуты.
Внедрите свой настраиваемый код в класс расширения.
Затем отредактируйте свой макет xml и замените тег LinearLayout и конечный тег на полное имя класса вашего специального класса, включая его имя пакета
<com.mycompany.mypackage.LinearLayoutChart>
<!-- layout definition as before -->
</com.mycompany.mypackage.LinearLayoutChart>
Это заставит макет наполнителя создать экземпляр вашего класса вместо запаса, поэтому вы можете переопределить защищенные методы и т.д.