Android中的ListView是如何工作的?I';我很困惑

Android中的ListView是如何工作的?I';我很困惑,android,android-listview,android-relativelayout,android-arrayadapter,Android,Android Listview,Android Relativelayout,Android Arrayadapter,我在安卓系统中尝试一个简单的列表视图。 我从某个网站上得到了一个例子。成功了。代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id

我在安卓系统中尝试一个简单的列表视图。 我从某个网站上得到了一个例子。成功了。代码如下:

<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>
主布局文件:(res/Layout/Main.xml)


无法在ListView中添加相对布局? 请帮助我,我从一个月起就被ListView打动了。我甚至连一步都动不了:(
我是java和XML的新手。请有人告诉我正确的路径。

首先,您需要扩展ListActivity,如

public class MyListActivity extends ListActivity{}
然后,您只需将适配器指定为

setListAdapter(adapter);
android开发者网站说,你的布局文件有问题,android列表视图id应该是
@android:id/list

您自己的视图必须包含id为的ListView对象 “@android:id/list”

编辑

基本上,您使用的数组适配器构造函数签名是

ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
方法,在该方法中可以对布局进行充气并设置适当的值


我想你至少会对此有所了解,然后看看有关listview的最详细教程。

listview示例

布局文件:

    <?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();
        }
    });

}

}

主要活动:

    <?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();
        }
    });

}

}
public类MainActivity扩展了ListActivity{
静态最终字符串[]NUM=新字符串[]{“1”、“2”、“3”,
"4", "5", "6", "7", "8",
"9", "10", "11", "12", "13" };
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setListAdapter(新的ArrayAdapter(this,R.layout.list_num,num));
ListView ListView=getListView();
setTextFilterEnabled(true);
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//单击后,显示带有文本视图文本的祝酒词
Toast.makeText(getApplicationContext(),
((TextView)view.getText(),Toast.LENGTH_SHORT.show();
}
});
}
}

Vogella给出了一个完美的理解。请仔细阅读。它甚至可以为您提供一步一步的信息。

我们无法在ListView中添加相对布局?--那么您到底面临什么问题?发生了什么?试着阅读……也许会clarify@AndroSelva,那么它实际上是如何工作的呢?我需要实现它不是每行的设计。就像每行的一个图像和其中的两个文本视图。我如何实现它?@praveenkumar您到底面临什么问题?您是否遇到异常?您在屏幕上看不到什么?列表行显示不正确?etc@Luksprog是的..我得到了豁免并要求我关闭。什么都没有出现..我得到了错误他re
mainListView.setAdapter(listAdapter);
我已经这样做了,并且工作正常,我在这里发布了问题,因为我不知道如何在listView行中实现相对布局,现在我已经实现了reactive布局,现在我不知道如何在行中添加两个textView并向其发送值。
public View getView(int position, View convertView, ViewGroup parent) {}
    <?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();
        }
    });

}

}