1

Androidで簡単なリストビューを試していました。私はいくつかのウェブサイトから例を得ました。出来た。以下のコード:

メイン レイアウト ファイル: (res/layout/main.xml)

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

    <ListView android:layout_width="fill_parent"   
      android:layout_height="fill_parent"   
      android:id="@+id/mainListView">  
    </ListView>  

</LinearLayout>  

行ファイル: (res/layout/simplerow.xml)

<TextView xmlns:android="http://schemas.android.com/apk/res/android"  
 android:id="@+id/rowTextView"   
 android:layout_width="fill_parent"   
 android:layout_height="wrap_content"  
 android:padding="10dp"  
 android:textSize="16sp" >  
</TextView> 

主な活動:

package com.windrealm.android;  

import java.util.ArrayList;  
import java.util.Arrays;  

import android.app.Activity;  
import android.os.Bundle;  
import android.widget.ArrayAdapter;  
import android.widget.ListView;  

public class SimpleListViewActivity extends Activity {  

  private ListView mainListView ;  
  private ArrayAdapter<String> listAdapter ;  

  /** Called when the activity is first created. */  
  @Override  
  public void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.main);  

  // Find the ListView resource.   
  mainListView = (ListView) findViewById( R.id.mainListView );  

  // Create and populate a List of planet names.  
  String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars",  
                                  "Jupiter", "Saturn", "Uranus", "Neptune"};    
  ArrayList<String> planetList = new ArrayList<String>();  
  planetList.addAll( Arrays.asList(planets) );  

  // Create ArrayAdapter using the planet list.  
  listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList);  

  // Add more planets. If you passed a String[] instead of a List<String>   
  // into the ArrayAdapter constructor, you must not add more items.   
  // Otherwise an exception will occur.  
  listAdapter.add( "Ceres" );  
  listAdapter.add( "Pluto" );  
  listAdapter.add( "Haumea" );  
  listAdapter.add( "Makemake" );  
  listAdapter.add( "Eris" );  

  // Set the ArrayAdapter as the ListView's adapter.  
  mainListView.setAdapter( listAdapter );        
  }  
}

動的ではなく、画像を追加しようとしていました。simplerow.xmlファイルにレイアウトを追加することを考えました。しかし、うまくいきません。

以下のコード:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:contentDescription="@string/songs"
        android:src="@drawable/song_bg" />

    <ImageView
        android:id="@+id/albumArt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp"
        android:contentDescription="@string/album"
        android:src="@drawable/albumart_shanghai" />

    <TextView
        android:id="@+id/rowTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/albumArt"
        android:layout_toRightOf="@+id/albumArt"
        android:layout_marginLeft="10dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@android:color/black" />

    <ImageButton
        android:id="@+id/imageView3"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="@null"
        android:contentDescription="@string/arrow"
        android:src="@drawable/arrow_icon" />

</RelativeLayout>

ListView 内に Relative レイアウトを追加できませんか? Plsは私を助けてくれます.1か月からListViewに悩まされています。私は一歩も進むことができませんでした:(私はJavaとXMLの初心者です。誰かが私に正しい道を示してください。

4

3 に答える 3

1

まず、次のように ListActivity を拡張する必要があります。

public class MyListActivity extends ListActivity{}

次に、アダプターを次のように指定するだけです

setListAdapter(adapter);

レイアウト ファイルに問題があります。Android リスト ビュー ID は である必要があります@android:id/list。Android デベロッパー サイトによると、

独自のビューには、ID「@android:id/list」の ListView オブジェクトが含まれている必要があります。

編集

基本的に、使用している配列アダプター コンストラクターのシグネチャは、

ArrayAdapter(Context context, int textViewResourceId, List<T> objects)

しかし、より複雑なレイアウトを使用したい場合は、

public ArrayAdapter (Context context, int resource, int textViewResourceId, List<T> objects)

textViewResourceIdレイアウト内の textview id を参照する必要があります。

これは明らかに、複数のテキスト フィールドを持つレイアウトを持つことができますが、指定されたテキストは ID で指定されたテキスト フィールドに表示されます。

したがって、タスクを完了するには、BaseAdapter を拡張する独自のアダプターを作成する必要があります。そのアダプター内で、オーバーライドする必要があります

public View getView(int position, View convertView, ViewGroup parent) {}

このメソッドでは、レイアウトを膨らませて適切な値を設定できます。

これで少なくともある程度のアイデアが得られたと思います。次に、リストビューに関するこの最も説明されたチュートリアルをご覧ください。

于 2012-08-03T07:47:19.503 に答える
1

完璧な理解を与えられたVogella。通り抜けてください。ステップバイステップの情報も提供します。

于 2012-08-04T05:11:05.633 に答える
0

リストビューの例

レイアウト ファイル:

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="20sp" >
    </TextView>

主な活動:

public class MainActivity extends ListActivity {

static final String[] NUM= new String[] { "1", "2", "3",
        "4", "5", "6", "7", "8",
        "9", "10", "11", "12", "13" };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_num,NUM));

    ListView listView = getListView();
    listView.setTextFilterEnabled(true);

    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // When clicked, show a toast with the TextView text
            Toast.makeText(getApplicationContext(),
            ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
        }
    });

}

}
于 2012-08-03T08:40:41.293 に答える