十日冲刺(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);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2023-04-21 c++训练打卡(13)