android 时间轴 listview,android 时间轴listview的UI界面实现
时间: 2023-11-16 19:04:09 浏览: 45
实现 Android 时间轴 ListView 的 UI 界面,可以采用自定义 ListView 的方式。以下是实现步骤:
1. 在 XML 布局文件中创建一个 ListView 控件。
2. 创建一个自定义的 Adapter,继承自 BaseAdapter。在 Adapter 中实现对数据源的处理和对每个列表项的视图的处理。
3. 在 getView() 方法中,创建一个自定义的布局文件,用于显示每个列表项的视图。可以在布局文件中添加一个时间轴线,以及显示时间和内容的 TextView 等控件。
4. 在 Adapter 中实现 getItemViewType() 和 getViewTypeCount() 方法,用于处理不同类型的列表项视图。
5. 在 Activity 中设置 ListView 的 Adapter。
6. 运行程序,即可看到实现的 Android 时间轴 ListView 的 UI 界面。
以下是一个简单的实现代码示例:
布局文件 timeline_item_layout.xml:
```
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<View
android:id="@+id/timeline"
android:layout_width="2dp"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:background="@color/colorPrimary" />
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:textColor="@color/colorPrimary"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="10dp"
android:textSize="14sp" />
</RelativeLayout>
```
自定义 Adapter TimelineAdapter.java:
```
public class TimelineAdapter extends BaseAdapter {
private Context mContext;
private List<TimelineItem> mTimelineItems;
private static final int VIEW_TYPE_ODD = 0;
private static final int VIEW_TYPE_EVEN = 1;
public TimelineAdapter(Context context, List<TimelineItem> timelineItems) {
mContext = context;
mTimelineItems = timelineItems;
}
@Override
public int getCount() {
return mTimelineItems.size();
}
@Override
public Object getItem(int position) {
return mTimelineItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position % 2 == 0 ? VIEW_TYPE_EVEN : VIEW_TYPE_ODD;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
int viewType = getItemViewType(position);
int layoutId = viewType == VIEW_TYPE_ODD ? R.layout.timeline_item_odd_layout : R.layout.timeline_item_even_layout;
convertView = LayoutInflater.from(mContext).inflate(layoutId, parent, false);
viewHolder.time = convertView.findViewById(R.id.time);
viewHolder.content = convertView.findViewById(R.id.content);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
TimelineItem timelineItem = mTimelineItems.get(position);
viewHolder.time.setText(timelineItem.getTime());
viewHolder.content.setText(timelineItem.getContent());
return convertView;
}
private static class ViewHolder {
TextView time;
TextView content;
}
}
```
TimelineItem.java:
```
public class TimelineItem {
private String mTime;
private String mContent;
public TimelineItem(String time, String content) {
mTime = time;
mContent = content;
}
public String getTime() {
return mTime;
}
public String getContent() {
return mContent;
}
}
```
Activity 中设置 Adapter:
```
List<TimelineItem> timelineItems = new ArrayList<>();
timelineItems.add(new TimelineItem("2021-01-01", "Event 1"));
timelineItems.add(new TimelineItem("2021-02-01", "Event 2"));
timelineItems.add(new TimelineItem("2021-03-01", "Event 3"));
timelineItems.add(new TimelineItem("2021-04-01", "Event 4"));
timelineItems.add(new TimelineItem("2021-05-01", "Event 5"));
ListView listView = findViewById(R.id.list_view);
TimelineAdapter adapter = new TimelineAdapter(this, timelineItems);
listView.setAdapter(adapter);
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)