ListView 是 Android 系统中最常用的 UI 控件之一,它用于以列表的形式显示数据。在本文中,我们将详细介绍 ListView 控件的各种属性和方法,以及使用它的实际案例。
一、ListView 控件的属性
1. android:id:ListView 控件的唯一标识符,用于在代码中引用它。
2. android:layout_width:ListView 控件的宽度,可以通过具体的数值或填充父布局等方式进行指定。
3. android:layout_height:ListView 控件的高度,同样可以通过具体的数值或填充父布局等方式进行指定。
4. android:divider:用于设置 ListView 中每个 item 之间的分隔线颜色和大小。
5. android:dividerHeight:设置水平分割线的高度。
6. android:entries:使用这个属性可以将一个字符串数组绑定到 ListView 控件上。ListView 将根据字数组内容生成 item 显示内容。
7. android:headerDividersEnabled:用于设置是否开启 header 的分隔线。
8. android:footerDividersEnabled:用于设置是否开启 footer 的分隔线。
9. android:listSelector:设置 ListView 中 item 被点击时的背景色。
10. android:scrollbars:设置 ListView 的滚动条类型。可以使用 none、vertical、horizontal 或 both 等属性值。
二、ListView 控件的方法
1. addHeaderView:将一个 View 添加到 ListView 控件的顶部作为 header,在数据列表之前显示。使用该方法时,需要先使用 getHeaderViewsCount 方法获取已添加的 header 数量,从而保证添加的 header 与数据列表不会冲突。
2. addFooterView:将一个 View 添加到 ListView 控件的底部作为 footer,在数据列表之后显示。通过该方法添加的 footer,同样需要通过 getFooterViewsCount 方法获取 footer 的数量,以跟数据列表进行分离。
3. setAdapter:绑定 ListView 控件与数据源之间的关系。一般情况下,我们需要继承 BaseAdapter 类并实现其中的抽象方法来创建我们自己的适配器类。然后,我们可以将适配器与 ListView 控件进行绑定。
4. setOnItemClickListener:设置 ListView 控件的 item 的点击事件监听器。在该方法中,我们需要实现 onItemClick 回调方法,以响应 item 的点击事件。
5. setEmptyView:该方法可以在 ListView 内容为空时显示默认视图。这里的默认视图通常是一个 TextView,显示类似“暂无数据”的提示信息。
6. getCheckedItemPositions:获取所有选中的 item 的位置。
7. getFirstVisiblePosition:获取 ListView 中第一个可见 item 的位置。
8. getLastVisiblePosition:获取 ListView 中最后一个可见 item 的位置。
9. smoothScrollToPosition:平滑地滚动到特定位置。
三、ListView 控件的使用案例
下面我们以在 ListView 控件中显示一个联系人列表为例,来演示 ListView 的使用方法。
1. 布局文件
首先,在布局文件中,我们需要定义一个 ListView 控件以及 toolbar。如下所示:
```xml
android:layout_height="match_parent"> android:layout_height="wrap_content" layout="@layout/toolbar" /> android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/toolbar" />
```
2. 数据模型
接下来,我们需要定义一个数据模型 Contact,来保存联系人的信息。
```java
public class Contact {
private String name;
private String phoneNumber;
public Contact(String name, String phoneNumber) {
this.name = name;
this.phoneNumber = phoneNumber;
}
public String getName() {
return name;
}
public String getPhoneNumber() {
return phoneNumber;
}
}
```
3. 适配器
然后,我们需要定义一个适配器 ContactAdapter,以将数据模型中的信息显示到 ListView 控件中。
```java
public class ContactAdapter extends BaseAdapter {
private List private LayoutInflater mInflater; public ContactAdapter(Context context, List mData = data; mInflater = LayoutInflater.from(context); } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.item_contact, null); holder = new ViewHolder(); holder.nameTv = convertView.findViewById(R.id.tv_name); holder.phoneTv = convertView.findViewById(R.id.tv_phone); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } Contact contact = mData.get(position); holder.nameTv.setText(contact.getName()); holder.phoneTv.setText(contact.getPhoneNumber()); return convertView; } static class ViewHolder { TextView nameTv; TextView phoneTv; } } ``` 4. item 布局 接下来,我们需要在 ListView 中显示联系人的姓名和电话号码。因此,我们需要定义一个 item_contact.xml 布局文件。如下所示: ```xml android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" /> android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@color/black_54" /> ``` 5. MainActivity 最后,在 MainActivity 中,我们需要将适配器和数据源绑定到 ListView 控件上,并设置 item 的点击事件监听器。 ```java public class MainActivity extends AppCompatActivity { private ListView mContactList; private ContactAdapter mContactAdapter; private List @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); initView(); } private void initData() { mData.add(new Contact("Tom", "12345678901")); mData.add(new Contact("Jerry", "12345678902")); mData.add(new Contact("Mike", "12345678903")); mData.add(new Contact("John", "12345678904")); mData.add(new Contact("Lucy", "12345678905")); mData.add(new Contact("Lily", "12345678906")); } private void initView() { Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); mContactList = findViewById(R.id.contact_list); mContactAdapter = new ContactAdapter(this, mData); mContactList.setAdapter(mContactAdapter); mContactList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, View view, int position, long id) { Contact contact = mData.get(position); Toast.makeText(MainActivity.this, contact.getName() + ": " + contact.getPhoneNumber(), Toast.LENGTH_SHORT).show(); } }); mContactList.setEmptyView(findViewById(R.id.empty_view)); } } ``` 以上就是一个简单的 ListView 使用案例。在实际应用中,ListView 还有许多其他的属性和方法可以使用。我们根据具体的需求进行选择和配置即可。 如果你喜欢我们三七知识分享网站的文章,
欢迎您分享或收藏知识分享网站文章
欢迎您到我们的网站逛逛喔!https://www.37seo.cn/
发表评论 取消回复