昨天成就
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 的插件组件下载失败或损坏导致的,在重载了插件后问题得到解决