Android多级列表的实现

多级列表是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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

free5156

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值