动态创建 XML 个卡片
Dynamically creating XML cards
我正在尝试动态创建一些布局,然后将它们扩充。
目前我有一些布局,我正在使用我自己的适配器 class 来扩充它们。
但是现在我需要根据生成的数据创建一些卡片。例如,我尝试使用 card
class
for (int i = 1; i < 10; i++) {
Card card = new Card(this);
card.setText("Test " + i);
mCards.add(card);
}
我无法按照我想要的方式进行设计。那么有没有办法让我使用 xml 设置来做到这一点,因为这样我有更多的设计选择?
冒着再次被否决的风险,我会post我的解决方案
现在这只是一个测试,看看它是否会按照我想要的方式运行。
稍后我将从实际列表中生成卡片,其中包含数据。
首先,我创建了一个 xml 布局,其中包含一个文本视图
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/test_content"
android:textSize="47pt"/>
</LinearLayout>
之后我创建了一个适配器,它会膨胀布局并为列表中的每个项目设置文本视图
public class xmlAdapter extends CardScrollAdapter {
private List<Integer> mCards;
private LayoutInflater mInflater;
public xmlAdapter(List<Integer> mCards, LayoutInflater inflater)
{
this.mCards = mCards;
this.mInflater = inflater;
}
@Override
public int getCount() {
return mCards.size();
}
@Override
public Object getItem(int i) {
return mCards.get(i);
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View mView = view;
view = mInflater.inflate(R.layout.xml_test, viewGroup, false);
TextView text = (TextView) view.findViewById(R.id.test_content);
text.setText("Test " + mCards.get(i));
view.setTag(text);
return view;
}
@Override
public int getPosition(Object o) {
return this.mCards.indexOf(o);
}
}
在我的 activity class 中,我完成了以下操作。
在 onCreate()
CreateCards();
mCardScroller = new CardScrollView(this);
mCardScroller.setAdapter(new xmlAdapter(numberCards, getLayoutInflater()));
mCardScroller.setOnItemClickListener(this);
请记住,这只是一个 for 循环,用于将一些数据放入要发送到适配器的列表中。
public void CreateCards() {
for (int i = 1; i < 10; i++) {
numberCards.add(i);
}
}
我正在尝试动态创建一些布局,然后将它们扩充。 目前我有一些布局,我正在使用我自己的适配器 class 来扩充它们。
但是现在我需要根据生成的数据创建一些卡片。例如,我尝试使用 card
class
for (int i = 1; i < 10; i++) {
Card card = new Card(this);
card.setText("Test " + i);
mCards.add(card);
}
我无法按照我想要的方式进行设计。那么有没有办法让我使用 xml 设置来做到这一点,因为这样我有更多的设计选择?
冒着再次被否决的风险,我会post我的解决方案
现在这只是一个测试,看看它是否会按照我想要的方式运行。 稍后我将从实际列表中生成卡片,其中包含数据。
首先,我创建了一个 xml 布局,其中包含一个文本视图
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/test_content"
android:textSize="47pt"/>
</LinearLayout>
之后我创建了一个适配器,它会膨胀布局并为列表中的每个项目设置文本视图
public class xmlAdapter extends CardScrollAdapter {
private List<Integer> mCards;
private LayoutInflater mInflater;
public xmlAdapter(List<Integer> mCards, LayoutInflater inflater)
{
this.mCards = mCards;
this.mInflater = inflater;
}
@Override
public int getCount() {
return mCards.size();
}
@Override
public Object getItem(int i) {
return mCards.get(i);
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View mView = view;
view = mInflater.inflate(R.layout.xml_test, viewGroup, false);
TextView text = (TextView) view.findViewById(R.id.test_content);
text.setText("Test " + mCards.get(i));
view.setTag(text);
return view;
}
@Override
public int getPosition(Object o) {
return this.mCards.indexOf(o);
}
}
在我的 activity class 中,我完成了以下操作。
在 onCreate()
CreateCards();
mCardScroller = new CardScrollView(this);
mCardScroller.setAdapter(new xmlAdapter(numberCards, getLayoutInflater()));
mCardScroller.setOnItemClickListener(this);
请记住,这只是一个 for 循环,用于将一些数据放入要发送到适配器的列表中。
public void CreateCards() {
for (int i = 1; i < 10; i++) {
numberCards.add(i);
}
}