将相同的视图多次添加到ViewFlipper中,并在视图中显示不同的信息

时间:2012-06-08 16:05:44

标签: android viewflipper

我有一个viewflipper,我希望多次使用相同的布局填充,但在每个布局中,我需要根据某些数组显示不同的文本和不同的背景图像。到目前为止,它只是每次用不同的文本/背景替换第一个视图。现在,我已经预定了数组。任何帮助是极大的赞赏。

viewflipper的代码:

private int numcards = 3;
private String creditnum[] = {"***********2451", "***********2452", "***********2453"};
private int carddraw[] = {R.drawable.fullcredit_blue, R.drawable.fullcredit_green, R.drawable.fullcredit_silver};

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.show_cards);
    viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);

    gestureDetector = new GestureDetector(this);
    for (int i = 0; i < numcards; i++)
    {
        viewFlipper.addView(View.inflate(this, R.layout.card_scroll_item, null), new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/credit.otf");
        Button creditbtn = (Button) findViewById(R.id.credit_button);
        creditbtn.setBackgroundResource(carddraw[i]);
        TextView txtname = (TextView) findViewById(R.id.credit_type);
        txtname.setText("Visa");
        TextView txtnumber = (TextView) findViewById(R.id.credit_number);
        txtnumber.setText(creditnum[i]);
        txtnumber.setTypeface(tf);

    }
}

我正在膨胀的视图的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >


<Button
    android:id="@+id/credit_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_marginTop="104dp" android:layout_marginBottom="220dp" android:layout_alignParentBottom="true"/>

<TextView
    android:id="@+id/credit_type"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignRight="@+id/credit_button"
    android:layout_alignTop="@+id/credit_button"
    android:layout_marginRight="22dp"
    android:layout_marginTop="21dp"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" android:typeface="normal"/>



<TextView
    android:id="@+id/credit_number"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/credit_button"
    android:layout_alignRight="@+id/credit_type"
    android:layout_centerVertical="true"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" android:layout_marginLeft="15dp" android:layout_marginBottom="30dp"/>

1 个答案:

答案 0 :(得分:1)

问题在于您没有坚持要添加的视图,因此在Activity的内容视图上调用了findViewById,该视图将始终返回具有该ID的第一个视图。试试这个:

View view = View.inflate(this, R.layout.card_scroll_item, null);
viewFlipper.addView(view);
Button creditbtn = (Button) view.findViewById(R.id.credit_button);
creditbtn.setBackgroundResource(carddraw[i]);
TextView txtname = (TextView) view.findViewById(R.id.credit_type);
txtname.setText("Visa");
TextView txtnumber = (TextView) view.findViewById(R.id.credit_number);
txtnumber.setText(creditnum[i]);
txtnumber.setTypeface(tf);

这些布局参数是多余的,因为您已在XML中定义它们。