列表类组件(列表视图ListView)
- 列表视图
以垂直列表的形式来列出需要显示的列表项。这些列表项可以带图片,也可以不带。
在activity_main.xml文件中,用ListView标签来定义列表视图。
- 属性
- android:layout_width :取值为match_parent,即与父容器相同。
- android:layout_height :取值为wrap_content,即包裹自身内容。
- android:entries :设置列表视图中每个列表项的内容。取值为一个数组资源。在res/values目录下新建一个array.xml,并使用string-array标签和item标签来设置列表视图的内容:
android:entries取值为该数组资源:
运行结果:
- 在Java代码中通过适配器来指定列表项的内容:
首先,给列表视图设置一个id,并注释掉通过entries属性设置列表项内容的代码:
在Java代码中进行如下操作:
package com.example.listviewdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends AppCompatActivity {
//定义一个列表视图
ListView listView;
//定义一个String[]
String[] type=new String[]{"全部","电影","音乐","图书"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建一个数组适配器.第一个参数是上下文对象;
//第二个参数是Android提供的布局资源;
//第三个参数是保存列表项内容的String[]
ArrayAdapter adapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,type);
//获取列表视图
listView=findViewById(R.id.listview);
//设置listview的适配器为adapter
listView.setAdapter(adapter);
}
}
运行结果:
- 获取用户点击的某个列表项的内容:
为列表视图的每个列表项添加单击事件监听器
package com.example.listviewdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//定义一个列表视图
ListView listView;
//定义一个String[]
String[] type=new String[]{"全部","电影","音乐","图书"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建一个数组适配器.第一个参数是上下文对象;
//第二个参数是Android提供的布局资源;
//第三个参数是保存列表项内容的String[]
ArrayAdapter adapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,type);
//获取列表视图
listView=findViewById(R.id.listview);
//设置listview的适配器为adapter
listView.setAdapter(adapter);
//为列表视图的每一项设置单击事件监听器
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this,parent.getItemAtPosition(position).toString(),Toast.LENGTH_LONG).show();
}
});
}
}
运行结果: