2012-06-08 2 views
0

У меня есть 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

Проблема заключается в том, что вы не держит на к представлению, которое вы добавляете, поэтому findViewById вызывается в представлении содержимого Activity, которое всегда будет возвращать первое представление с этим идентификатором. Попробуйте следующее:

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.

+0

спасибо за ответ, но я уже пошел дальше и понял его по-другому. –

+0

не могли бы вы отказать в ответе? – TastyLemons

Смежные вопросы