十日冲刺(DAY2)

第二天,基础MainActivity框架
package com.example.juanzeng;

import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.example.juanzeng.adapter.MyAdapter;
import com.example.juanzeng.bean.Note;
import com.example.juanzeng.util.SpfUtil;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MainActivity extends AppCompatActivity {

解释
 
 
private RecyclerView mRecyclerView;
private FloatingActionButton mBtnAdd;
private List<Note> mNotes;
private MyAdapter mMyAdapter;

private NoteDbOpenHelper mNoteDbOpenHelper;

public static final int MODE_LINEAR = 0;
public static final int MODE_GRID = 1;

public static final String KEY_LAYOUT_MODE = "key_layout_mode";

private int currentListLayoutMode = MODE_LINEAR;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    initData();
    initEvent();

    BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_home:
                    // 处理首页逻辑
                    return true;
                case R.id.action_search:
                    // 处理搜索逻辑
                    return true;
                case R.id.action_profile:
                    // 处理个人中心逻辑
                    return true;
            }
            return false;
        }
    });

}

@Override
protected void onResume() {
    super.onResume();
    refreshDataFromDb();
    setListLayout();
}

private void setListLayout() {
    currentListLayoutMode = SpfUtil.getIntWithDefault(this, KEY_LAYOUT_MODE, MODE_LINEAR);
    if (currentListLayoutMode == MODE_LINEAR) {
        setToLinearList();
    }else{
        setToGridList();
    }
}

private void refreshDataFromDb() {
    mNotes = getDataFromDB();
    mMyAdapter.refreshData(mNotes);
}

private void initEvent() {
    mMyAdapter = new MyAdapter(this, mNotes);
    mRecyclerView.setAdapter(mMyAdapter);

// LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
// mRecyclerView.setLayoutManager(linearLayoutManager);
// mMyAdapter.setViewType(MyAdapter.TYPE_LINEAR_LAYOUT);
setListLayout();

解释
 
 
}

private void initData() {
    mNotes = new ArrayList<>();
    mNoteDbOpenHelper = new NoteDbOpenHelper(this);

//
// for (int i = 0; i < 30; i++) {
// Note note = new Note();
// note.setTitle("这是标题"+i);
// note.setContent("这是内容"+i);
// note.setCreatedTime(getCurrentTimeFormat());
// mNotes.add(note);
// }

// mNotes = getDataFromDB();

解释
 
 
}

private List<Note> getDataFromDB() {
    return mNoteDbOpenHelper.queryAllFromDb();
}

private String getCurrentTimeFormat() {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY年MM月dd HH:mm:ss");
    Date date = new Date();
    return simpleDateFormat.format(date);
}

private void initView() {
    mRecyclerView = findViewById(R.id.rlv);
}


public void add(View view) {
    Intent intent = new Intent(this, AddActivity.class);
    startActivity(intent);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            mNotes = mNoteDbOpenHelper.queryFromDbByTitle(newText);
            mMyAdapter.refreshData(mNotes);
            return true;
        }
    });
    return super.onCreateOptionsMenu(menu);
}


@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    item.setChecked(true);

    switch (item.getItemId()) {

        case R.id.menu_linear:
            setToLinearList();
            currentListLayoutMode = MODE_LINEAR;
            SpfUtil.saveInt(this,KEY_LAYOUT_MODE,MODE_LINEAR);

            return true;
        case R.id.menu_grid:

            setToGridList();
            currentListLayoutMode = MODE_GRID;
            SpfUtil.saveInt(this,KEY_LAYOUT_MODE,MODE_GRID);
            return true;
        default:
            return super.onOptionsItemSelected(item);

    }
}

private void setToLinearList() {
    RecyclerView.LayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
    mRecyclerView.setLayoutManager(linearLayoutManager);
    mMyAdapter.setViewType(MyAdapter.TYPE_LINEAR_LAYOUT);
    mMyAdapter.notifyDataSetChanged();
}


private void setToGridList() {
    RecyclerView.LayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
    mRecyclerView.setLayoutManager(gridLayoutManager);
    mMyAdapter.setViewType(MyAdapter.TYPE_GRID_LAYOUT);
    mMyAdapter.notifyDataSetChanged();
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    if (currentListLayoutMode == MODE_LINEAR) {
        MenuItem item = menu.findItem(R.id.menu_linear);
        item.setChecked(true);
    } else {
        menu.findItem(R.id.menu_grid).setChecked(true);
    }
    return super.onPrepareOptionsMenu(menu);
}
posted @   夏季彼岸德  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2023-04-21 c++训练打卡(13)
点击右上角即可分享
微信分享提示