Android: отображать данные в формате XML - PullRequest
0 голосов
/ 31 января 2012

Я хочу создать список игр, в котором будут отображаться такие детали игры, как имя оппонента, счет и т. Д. У меня проблема с извлечением данных в xml и последующим их отображением. Пожалуйста, помогите.

Я создал два xml. Я должен установить данные во 2-й xml и затем включить этот 2-й xml в 1-й xml. мой первый xml

<FrameLayout
        android:id="@+id/gameListFrame"
        android:layout_width="fill_parent"
        android:layout_height="380dp"
        android:orientation="vertical" >

        <ScrollView
            android:id="@+id/scrollView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5dip" >

            <LinearLayout
                android:id="@+id/GameListHolder"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="@color/scrollBackG"
                android:orientation="horizontal" >

           </LinearLayout>
        </ScrollView>
    </FrameLayout>

2-й xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gamelist_items"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:orientation="vertical" >

    <LinearLayout

        android:layout_width="fill_parent"
        android:layout_height="50px"
        android:gravity="left"
        android:orientation="horizontal"
        android:background="#FFF" >

        <ImageView
            android:id="@+id/gl_avatar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher" />

        <LinearLayout android:orientation="horizontal"
            android:layout_width="225px"
            android:layout_height="fill_parent"
            android:gravity="left" 
            android:background="#000">
            <LinearLayout android:orientation="vertical"
                android:layout_width="175px"
                android:layout_height="wrap_content"
                android:gravity="top">
                <TextView android:id="@+id/oppName"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" />
                <LinearLayout android:orientation="horizontal"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:gravity="top" >
                    <TextView android:id="@+id/lastWord"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"

                        />
                     <TextView android:id="@+id/diffTime"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        />
                  </LinearLayout>
             </LinearLayout>


        </LinearLayout>
    </LinearLayout>

</LinearLayout>

Мой код

gameListItem=(LinearLayout) findViewById(R.id.gamelist_items);

for (i=0;i<gamelistVector.size();i++)
{


 rowView=View.inflate(context, R.layout.gamelist_details,null );
TextView oppName=(TextView) rowView.findViewById(R.id.oppName); 
TextView lastWord=(TextView) rowView.findViewById(R.id.lastWord);
TextView diffTime=(TextView) rowView.findViewById(R.id.diffTime);
oppName.setText(gList.getOppName());
lastWord.setText(gList.getOppLastWord());
diffTime.setText(gList.getDiffTime()+"hr");
gameListItem.addView(rowView);  //show the total games}

Ответы [ 3 ]

0 голосов
/ 31 января 2012

Вам нужна ссылка на инфлятор для надувания ракурсов.

Для использования ссылки GetInflater:

LayoutInflater inflater = (LayoutInflater)context.getSystemService
      (Context.LAYOUT_INFLATER_SERVICE);

gameListItem=(LinearLayout) findViewById(R.id.gamelist_items);

    for (i=0;i<gamelistVector.size();i++)
    {
        rowView=inflater.inflate(R.layout.gamelist_details, null);             
        TextView oppName=(TextView) rowView.findViewById(R.id.oppName); 
        TextView lastWord=(TextView) rowView.findViewById(R.id.lastWord);           
        TextView diffTime=(TextView) rowView.findViewById(R.id.diffTime);
        oppName.setText(gList.getOppName());                            
        lastWord.setText(gList.getOppLastWord());                            
        diffTime.setText(gList.getDiffTime()+"hr");                     
        gameListItem.addView(rowView);  //show the total games
    }
0 голосов
/ 08 февраля 2012

спасибо, ребята, 4 ответили на мой вопрос ... я увидел ваши предложения и нашел выход. Это то, что я сделал и работает ...

private void doDisplay(){
    this.runOnUiThread(new Thread() {
        @Override
        public void run() {
            TextView gameCount=(TextView) findViewById(R.id.game_count);
            gameCount.setText(" found "+maxGames+" games ");

            for (i=0;i<gamelistVector.size();i++)
            {

                rowView=View.inflate(context, R.layout.gamelist_details, null);
                TextView oppName=(TextView) rowView.findViewById(R.id.oppName);
                TextView lastWord=(TextView) rowView.findViewById(R.id.lastWord);
                TextView diffTime=(TextView) rowView.findViewById(R.id.diffTime);
                TextView score=(TextView) rowView.findViewById(R.id.opplastMoveScore);
                oppName.setText(" "+gamelistVector.get(i).getOppName());
                lastWord.setText(" "+gamelistVector.get(i).getOppLastWord());
                diffTime.setText(gamelistVector.get(i).getDiffTime()+"");
                score.setText("("+gamelistVector.get(i).getLastMoveScore()+")");

                ImageView oppImage = (ImageView) rowView.findViewById(R.id.gl_avatar);
                oppImage.setImageBitmap(gamelistVector.get(i).getOppImage());
                ImageView status = (ImageView) rowView.findViewById(R.id.gl_status);
                status.setImageResource(gamelistVector.get(i).getTurnUserID());


                gameListItem.addView(rowView);

            }
        }
    });    
}
0 голосов
/ 31 января 2012

Вам необходимо расширить ListAdapter и переопределить метод getView(), который устанавливает данные для каждой строки.

См. этот пример

...