有关ListView的设计需要使用MVP模式
题目
设计一个纯文字的滑动列表
效果
com/example/test/MainActivity.java
package com.example.test;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
// Model:模型层,使用ArrayList<String>保存数据源
private ArrayList<String> mDataList;
// View:视图层,ListView
private ListView mListView;
// Presenter:表示层,ArrayAdapter
private ArrayAdapter<String> mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 实例化数据源
mDataList = new ArrayList<String>();
mDataList.add("某人通电话");
mDataList.add("实时更新");
mDataList.add("飞机现身!");
mDataList.add("齐抛债");
mDataList.add("允许合作制定5G标准");
mDataList.add("两人双双卸任");
mDataList.add("男子深夜驾车连撞多车?");
mDataList.add("一人拒戴口罩");
mDataList.add("允许与华为合作制定5G标准 华为回应");
mDataList.add("公司高层变动");
mDataList.add("济南青岛新房价格环比上涨");
mDataList.add("拒绝韩方向请求");
mDataList.add("判官");
mDataList.add("新冠事件");
mDataList.add("5G套餐用户数超5G手机出货量:你被5G了吗?");
mDataList.add("孩子注意力不集中?");
mDataList.add("暂时关闭场所");
mDataList.add("李宇春彩绘妆容前卫个性 许魏洲摇滚范儿十足");
mDataList.add("宣布在海峡活动");
// 找控件
mListView = (ListView) findViewById(R.id.list_view);
// 实例化适配器
// 参数一:上下文,直接传 类名.this
// 参数二:滑动列表每一栏内部的子布局,如果要使用Android自带的子布局需要注意写法
// 参数三:Model模型层
mAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, mDataList);
//发现视图层View没有跟表示层Presenter建立关系
mListView.setAdapter(mAdapter);
}
}
layout/activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.test.MainActivity" >
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</RelativeLayout>