Предложенный подход будет работать нормально, и он более или менее соответствует общему шаблону, используемому при заполнении элементов ListView.
Определить макет, который содержит одну строку. Получите LayoutInflater
, используя LayoutInflater.from(myActivity)
. Используйте этот инфлатер для создания новых строк, используя ваш макет как шаблон. Обычно вам нужно использовать форму с тремя аргументами LayoutInflater#inflate
, передавая false
для третьего attachToRoot
параметра.
Допустим, вы хотели использовать макет шаблона с меткой и кнопкой в каждом элементе. Это может выглядеть примерно так: (Хотя вместо этого вы можете определить строки таблицы.)
Рез / макет / item.xml:
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/my_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Затем в точке, где вы надуваетесь:
// Inflate the layout and find the component views to configure
final View item = inflater.inflate(R.layout.item, parentView, false);
final TextView label = (TextView) item.findViewById(R.id.my_label);
final Button button = (Button) item.findViewById(R.id.my_button);
// Configure component views
label.setText(labelText);
button.setText(buttonText);
button.setOnClickListener(buttonClickListener);
// Add to parent
parentView.addView(item);