天行健,君子以自强不息。
ListView(列表控件)
ListView是Android中显示数据常用的控件之一,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
布局界面添加一个ListView的控件,设置它的高度和宽度。还可以设置每条数据分割线的颜色和大小。
| 属性 | 功能 |
|---|---|
| android:divider | 设置分割线颜色 |
| android:dividerHeight | 设置分割线大小 |
做好上面这些后,在MainActivity用id找到布局中的ListView,就是加载适配器的过程。
public class MainActivity6 extends AppCompatActivity {
private ListView listView;
private ArrayAdapter<String> adapter;//适配器初始化
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main6);
// 数据源
String array[]={"小米","华为","Vivo","OPPO","联想"};
listView=findViewById(R.id.listItem);
/**
* 加载化适配器
* 参数1:获取上下文环境
* 参数2:当前ListView加载每一个列表所对应的布局文件
* 参数3:数据源
*/
adapter=new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1,
array);
listView.setAdapter(adapter);
// 简单点击事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// 获取到点击的文本
String txt=listView.getItemAtPosition(i)+"";
Toast.makeText(MainActivity6.this, "点击了第:"+i+"个;内容为:"+txt, Toast.LENGTH_SHORT).show();
}
});
}
}
效果图:
接下来还有一种就是图片与文字相结合的列表,这种格式复杂的数据就要用到SimpleAdapter适配器了。
public class MainActivity6 extends AppCompatActivity {
private ListView listView;
private ArrayAdapter<String> adapter;//数组适配器;
private ArrayList<String> list;
private SimpleAdapter simpleAdapter;//可以将图片和文字结合的适配器
private List<Map<String,Object>> mapList;//列表集合
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main6);
listView=findViewById(R.id.listItem);
// initView();//普通适配器
initView2();//SimpleAdapter适配器
}
private void initView2() {
mapList=new ArrayList<>();//数组列表
mapList=getData();//将数据源添加到数组列表中
/**
* 参数1:上下文
* 参数2:数组列表,可以看做是数据源
* 参数3:对应的键名
* 参数4:自定义文件控件的id
*/
simpleAdapter=new SimpleAdapter(this,
mapList,
R.layout.list_item,new String[]{"image","text"},
new int[]{R.id.listImage,R.id.listText});
listView.setAdapter(simpleAdapter);
}
// 数据源
private List<Map<String, Object>> getData() {
for (int i = 0; i < 10; i++) {
Map<String,Object> map=new HashMap<>();
map.put("image",R.mipmap.orange);
map.put("text","file"+(i+1));
mapList.add(map);
}
return mapList;
}
世上最好的等待叫来日可期