昨天成就
android端的主界面设计
今天任务:
导航抽屉菜单
模块化功能展示
职级体系表格
响应式交互设计
具体代码如下:
package com.example.hrms.activities;
import android.os.Bundle;
import android.view.MenuItem;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.hrms.R;
import com.example.hrms.adapters.ModuleAdapter;
import com.example.hrms.models.Module;
import com.google.android.material.navigation.NavigationView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawerLayout;
private ModuleAdapter moduleAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化抽屉导航
drawerLayout = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
// 初始化模块列表
RecyclerView recyclerView = findViewById(R.id.module_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
moduleAdapter = new ModuleAdapter(loadModules());
recyclerView.setAdapter(moduleAdapter);
}
private List<Module> loadModules() {
List<Module> modules = new ArrayList<>();
modules.add(new Module("组织架构管理", "企业管理+组织架构+部门+编制", "树形组织编辑、编制预警", true));
modules.add(new Module("职位职级体系", "职位管理+职级管理", "职级薪资关联设置", false));
modules.add(new Module("员工入职发展", "入职+新人成长+转正", "入职引导、转正自动化", true));
modules.add(new Module("员工异动管理", "调岗+离职", "工作交接清单", false));
modules.add(new Module("合同全生命周期", "合同管理+台账", "到期自动提醒", false));
return modules;
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_org:
startActivity(new Intent(this, OrganizationActivity.class));
break;
case R.id.nav_position:
startActivity(new Intent(this, PositionLevelActivity.class));
break;
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
}
package com.example.hrms.adapters;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.hrms.R;
import com.example.hrms.models.Module;
import java.util.List;
public class ModuleAdapter extends RecyclerView.Adapter<ModuleAdapter.ModuleViewHolder> {
private final List<Module> moduleList;
public ModuleAdapter(List<Module> moduleList) {
this.moduleList = moduleList;
}
@NonNull
@Override
public ModuleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_module, parent, false);
return new ModuleViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ModuleViewHolder holder, int position) {
Module module = moduleList.get(position);
holder.name.setText(module.getName());
holder.description.setText(module.getCoreFeatures());
}
@Override
public int getItemCount() {
return moduleList.size();
}
static class ModuleViewHolder extends RecyclerView.ViewHolder {
TextView name, description;
public ModuleViewHolder(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.module_name);
description = itemView.findViewById(R.id.module_description);
}
}
}
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:title="人力资源管理系统"/>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/module_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"/>
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/drawer_menu"/>
</androidx.drawerlayout.widget.DrawerLayout>
今天遇到的困难:在编写适配器时报错无法解析R符号,原因是XML 文件有错误,在检查了布局文件后发现了问题在于Can't download Android Plugin component: layoutlib-resources
是由于 Android Studio 的插件组件下载失败或损坏导致的,在重载了插件后问题得到解决
浙公网安备 33010602011771号