package cn.mutils.app.demo.ui;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import cn.mutils.app.demo.R;
import cn.mutils.app.ui.StateView;
import cn.mutils.app.ui.adapter.IItemView;
import cn.mutils.app.ui.adapter.ItemAdapter;
import cn.mutils.app.ui.adapter.ItemView;
import cn.mutils.core.annotation.res.FindViewById;
import cn.mutils.core.annotation.res.SetContentView;
@SetContentView(R.layout.view_view_type)
public class ViewTypeDemoView extends StateView {
@FindViewById(R.id.list)
protected ListView mList;
protected ViewTypeAdapter mAdapter;
public ViewTypeDemoView(Context context) {
super(context);
}
public ViewTypeDemoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ViewTypeDemoView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onCreate() {
super.onCreate();
mAdapter = new ViewTypeAdapter();
mList.setAdapter(mAdapter);
initData();
}
protected void initData() {
ArrayList<ViewTypeItem> data = new ArrayList<ViewTypeItem>();
for (int i = 0; i < 50; i++) {
ViewTypeItem item = new ViewTypeItem();
item.type = Math.random() > 0.6 ? ViewTypeAdapter.TYPE_1 : ViewTypeAdapter.TYPE_2;
item.title = "类型索引号[" + item.type + "]";
data.add(item);
}
mAdapter.setDataProvider(data);
}
static class ViewTypeItem {
public int type;
public String title;
}
class ViewTypeAdapter extends ItemAdapter<ViewTypeItem> {
public static final int TYPE_1 = 0;
public static final int TYPE_2 = 1;
@Override
public IItemView<ViewTypeItem> getItemView(int itemViewType) {
IItemView<ViewTypeItem> itemView = null;
switch (itemViewType) {
case TYPE_1:
itemView = new ViewTypeView1(getContext());
break;
case TYPE_2:
itemView = new ViewTypeView2(getContext());
break;
}
return itemView;
}
@Override
public int getItemViewType(int position) {
ViewTypeItem item = getItem(position);
return item.type;
}
@Override
public int getViewTypeCount() {
return 2;
}
}
@SetContentView(R.layout.item_view_type_1)
class ViewTypeView1 extends ItemView<ViewTypeItem> {
@FindViewById(R.id.title)
protected TextView mTitleText;
public ViewTypeView1(Context context) {
super(context);
}
@Override
public void onResume() {
mTitleText.setText((mPosition + 1) + ":" + mDataProvider.title);
}
}
@SetContentView(R.layout.item_view_type_2)
class ViewTypeView2 extends ItemView<ViewTypeItem> {
@FindViewById(R.id.title)
protected TextView mTitleText;
public ViewTypeView2(Context context) {
super(context);
}
@Override
public void onResume() {
mTitleText.setText((mPosition + 1) + ":" + mDataProvider.title);
}
}
}