Main:
public class MainActivity extends AppCompatActivity {
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.list_view_demo);
//自定义的 活动项目类 作为该列表集合
ArrayList<ActivityItem> activityItems = new ArrayList<>();
//添加活动项目,对应名字和对应文件活动名.class
activityItems.add(new ActivityItem("1. 异步请求数据列表", RequestDataActivity.class));
activityItems.add(new ActivityItem("2. 模仿IM聊天布局", ChatActivity.class));
//连接适配器(context,ArrayList<ActivityItem>)
mListView.setAdapter(new MainListAdapter(MainActivity.this, activityItems));
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<ListView
android:id="@+id/list_view_demo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
</ListView>
</RelativeLayout>
/*
MainListAdapter extends BindableAdapter<ActivityItem> extends BaseListAdapter<T> extends BaseAdapter
简型适配器
*/
public class MainListAdapter extends BindableAdapter<ActivityItem> {
private Context mContext;
//
public MainListAdapter(Context context, List<ActivityItem> list) {
super(context, list);
mContext = context;
}
@Override//新建项目视图
protected View onNewItemView(LayoutInflater inflater, ViewGroup parent, int position) {
View view = inflater.inflate(R.layout.item_main_list, null);
ViewHolder holder = new ViewHolder();
holder.mTitle = (TextView) view.findViewById(R.id.title);
view.setTag(holder);
return view;
}
@Override//绑定项目视图
protected void onBindItemView(View viewItem, final ActivityItem data, int position, ViewGroup parent) {
ViewHolder holder = (ViewHolder) viewItem.getTag();
holder.mTitle.setText(data.getName());
//
viewItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mContext.startActivity(new Intent(mContext, data.getActivityClass()));
}
});
}
private class ViewHolder {
private TextView mTitle;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:text="@string/app_name"
android:minHeight="30dp"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:textColor="#494949"
android:layout_marginLeft="16dp"
android:layout_toRightOf="@+id/breakfast_imageview"
android:textSize="18sp"/>
</LinearLayout>
/*
活动项目类 名字、活动类
*/
public class ActivityItem {
private String mName;
private Class mActivityClass;
//自定义类都最好构造构造函数设置传参类型
public ActivityItem(String name, Class activityClass) {
mName = name;
mActivityClass = activityClass;
}
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}
public Class getActivityClass() {
return mActivityClass;
}
public void setActivityClass(Class activityClass) {
mActivityClass = activityClass;
}
}
/*
可绑定的适配器,继承于 BaseListAdapter<T> extends BaseAdapter
*/
public abstract class BindableAdapter<T> extends BaseListAdapter<T> {
public BindableAdapter(Context context) {
super(context);
}
//环境,List<>
public BindableAdapter(Context context, List<T> list) {
super(context, list);
}
//获取下拉视图,新建+绑定
@Override
public final View getDropDownView(int position, View view, ViewGroup container) {
if (view == null) {
//新建下拉视图
view = newDropDownView(LayoutInflater.from(getContext()), position, container);
if (view == null) {
throw new IllegalStateException("newDropDownView result must not be null.");//非法状态异常
}
}
//绑定下拉视图
bindDropDownView(getItem(position), position, view, container);
return view;
}
//为指定位置 创建 下拉视图的新实例
public View newDropDownView(LayoutInflater inflater, int position, ViewGroup container) {
return onNewItemView(inflater, container, position);
}
//将指定{@code position}的数据 绑定 到下拉视图
public void bindDropDownView(T item, int position, View view, ViewGroup container) {
onBindItemView(view, item, position, container);
}
}
=
/*
List基本适配器:
*/
public abstract class BaseListAdapter<T> extends BaseAdapter {
private List<T> mList;
private final Context mContext;
public BaseListAdapter(Context context) {
this.mContext = context;
}
public BaseListAdapter(Context context, List<T> list) {
this.mContext = context;
mList = list;
}
//获取环境上下文
public Context getContext() {
return mContext;
}
@Override
public int getCount() {
return mList != null ? mList.size() : 0;
}
@Override
public T getItem(int position) {
return mList != null ? mList.get(position) : null;
}
@Override
public long getItemId(int position) {
return position;
}
public void setData(List<T> list) {
mList = list;
//BaseAdapter的方法 :通知数据集已更改。
notifyDataSetChanged();
}
public List<T> getList() {
return mList;
}
// 得到View 位置,转换视图,viewgroup
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
//新建项目视图
convertView = onNewItemView(LayoutInflater.from(mContext), parent, position);
}
//绑定项目视图
onBindItemView(convertView, getItem(position), position, parent);
return convertView;
}
//新建项目视图
protected abstract View onNewItemView(LayoutInflater inflater, ViewGroup parent, int position);
//绑定项目视图
protected abstract void onBindItemView(View viewItem, T data, int position, ViewGroup parent);
public void notifyDataSetChanged(List<T> mList) {
this.mList = mList;
notifyDataSetChanged();
}
}