多级列表是ui入门,没什么特别需要注意的难点,直接上代码:
第一级列表窗口
/**
* 第一级列表
* 1.编辑状态下选中一个条目,会弹出底部操作栏
* 2.非编辑状态下选中条目会跳转到下一级
* 3.复选框使用ImageView而不是CheckBox
* 4.编辑状态下,按返回键回到非编辑状态
*/
public class SectionListActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "SectionListActivity";
@BindView(R.id.tv_title_middle)
TextView title;
@BindView(R.id.title_left)
ImageView back;
@BindView(R.id.discuss_list_view)
ListView mListView;
@BindView(R.id.edit_tv)
TextView edit;
@BindView(R.id.filter_tv)
TextView filter;
@BindView(R.id.discuss_toolbar)
LinearLayout mToolbar;
@BindView(R.id.discuss_close)
TextView btnClose;
@BindView(R.id.discuss_open)
TextView btnOpen;
@BindView(R.id.discuss_delete)
TextView btnDelete;
private Context mContext;
private boolean isEditable;
private List<ClsSection> mClsSectionList;
private SectionListAdapter mAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_section_list);
//使用ButterKnife绑定控件
ButterKnife.bind(this);
initView();
initData();
initListener();
}
private void initData() {
mContext = this;
//初始状态为非编辑
setIsEditable(false);
//初始化数据源
mClsSectionList = new ArrayList<>();
mAdapter = new SectionListAdapter(mClsSectionList, mContext);
mListView.setAdapter(mAdapter);
initOfflineData(10);
}
//生成模拟数据
private void initOfflineData(int num) {
List<ClsSection> clsSectionList = new ArrayList<>();
for (int i = 0; i < num; i++) {
ClsSection clsSection = new ClsSection();
clsSection.setIsClosed("isClosed" + i);
clsSection.setCloseDate("closeDate" + i);
clsSection.setSectionID("sectionID" + i);
clsSection.setSectionName("sectionName" + i);
clsSection.setSectionType("sectionType" + i);
clsSection.setSectionDesc("sectionDesc" + i);
clsSection.setSectionLogo("sectionLogo" + i);
clsSection.setSectionManagerID("sectionManagerID" + i);
clsSection.setSectionManager("sectionManager" + i);
clsSectionList.add(clsSection);
}
mClsSectionList.addAll(clsSectionList);
mAdapter.notifyDataSetChanged();
}
private void initView() {
title.setText("一级列表");
mToolbar.setVisibility(View.GONE);
filter.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_add_black_24dp, 0, 0, 0);
edit.setVisibility(View.VISIBLE);
filter.setVisibility(View.VISIBLE);
}
private void initListener() {
back.setOnClickListener(this);
edit.setOnClickListener(this);
btnClose.setOnClickListener(this);
btnDelete.setOnClickListener(this);
btnOpen.setOnClickListener(this);
filter.setOnClickListener(this);
mListView.setOnItemClickListener((parent, view, position, id) -> {
ClsSection clsSecti