2016-04-24 7 views
0

iは、以下のXMLレイアウトファイル持っているだけでなく、は、XMLアンドロイドレイアウトの複数のインスタンス

あなたは罰金を期待して作成:

単に
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    android:orientation="vertical" 
    android:weightSum="1" 
    tools:showIn="@layout/activity_main"> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </android.support.v4.view.ViewPager> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="64dp" 
     android:text="" 
     android:id="@+id/textView" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignBottom="@+id/progressBar1" /> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="406dp" 
     android:id="@+id/img" 
     android:layout_below="@+id/textView" /> 

    <ProgressBar 
     android:id="@+id/progressBar1" 
     style="?android:attr/progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="gone" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

を、それがのTextViewとイメージビューが含まれています。

と私は次のように配列リストを受け取り、以下の機能を持っている:私は何をしたいが受信(学生)のループにある

public void DisplyOnTextView(List<Student> students) { 
     textView.setText(students.get(i).getDes()); 
     new LoadImage().execute(students.get(i).getUrl().replaceAll("\\s+", "")); 
} 

のxmlレイアウトの新しいインスタンスを作成するための配列リストをどのこのような配列内の各レイアウトを保存するために、配列内の各学生のためのTextViewとImageViewのが含まれます:

int[] layouts = {R.layout.instance1, R.layout.instance2,...}; 

私のループは次のようになります。

for(int i=0;i<students.size(); i++){ 
// create new layout for student[i] 
// create new textview for student[i] 
//create new imageview for student[i] 
// layouts[i] = the new created layout 
} 

これは可能ですか? 助けてください!

よろしく..

+1

ないあなたがやろうとしているか確認してください、しかし、カスタムアダプタ – Yazan

答えて

1

カスタムビューを宣言し、それはRelativeLayoutを拡張作り、それのコンストラクタであなたは、あなたがあなたのカスタムビューをインスタンス化し、としてそれを置くことができ

inflate(getContext(), R.layout.your_xml, this); 

を呼び出しますすることができますあなたもあなたのデータを表示するための方法を作るように、このカスタムビューに自分のものを行うことができます...例

ために、他のViewGroup

内の子これは

NOTE助け

ViewGroup v = (ViewGroup)findViewById(...); 
v.addChild(layouts[0]); 
layouts[0].drawStudent(students.get(i)); 

希望:あなたはを通してどののViewGroupにこれらのビューを追加することができます

CustomView[] layouts = new CustomView[students.size()]; 

for(int i=0;i<students.size(); i++){ 
// create new layout for student[i] 
CustomView v = new CustomView(this); 

// layouts[i] = the new created layout 
layouts[i] = v; 

} 

は、あなたのようなあなたの活動からこのビューを使用することができ、これをコードは単なるサンプルですが、テストされているわけではなく、保証されていないので、それを行う方法のアイデアです

UPDATE - 直接XMLを使用する:

を次のようにあなたが行うことができますあなたのループで:

ViewGroup[] layouts = new ViewGroup[students.size()]; 

LayoutInflater i = LayoutInflater.from(getApplicationContext());  
for(int i=0;i<students.size(); i++){ 
// create new layout for student[i] 
ViewGroup v = i.inflate(R.layout.your_xml,null); // you can use RelativeLayout instead of ViewGroup since your root view is RelativeLayout 

// setup textView 
TextView tv = (TextView) v.getChildAt(1) // child view at index 1 
tv.setText(...); 

// setup imageView 
ImageView iv = (ImageView) v.getChildAt(2) // child view at index 2 
new ImageLoader..... 

// layouts[i] = the new created layout 
layouts[i] = v; 

} 
+1

でListView' 'を見ては、あなたに感謝します親愛なる、私はそれをはっきりと理解することはできませんが、私は必要なものは、XMLファイルのような新しいレイアウトを作成し、各学生のための新しいtextviewとimageviewレイアウト配列内に格納することです。ループ..私はあなたのコードの概念を理解していませんでした。 – MSMC

+0

あなたは歓迎です、そして、私の答えが明確でない場合はごめんなさい、あなたのxmlレイアウトを表すCustomViewを使用した場合、それは可能です。 ..xml directtを使用する場合は、毎回ループ内でxmlファイルを展開し、ループ内のRelativeLayoutに割り当てる必要があるかもしれません(TextViewとImageViewを設定するためにその子にアクセスしてから、このRelativeLayoutをViewGroupに追加する必要があります)それは表示されます...しかし、これは確かではありません –

+0

もう一度感謝します、多分2番目のアイデアは私が意味するものですが、どのようにこれを行うことができますか?任意のリファレンスまたはサンプル? – MSMC

関連する問題