请提供详细代码
时间: 2024-02-26 11:56:41 浏览: 18
好的,以下是具体的代码实现:
MainActivity.java:
```
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnHome, btnUserList, btnSettings, btnAbout;
private Fragment homeFragment, userListFragment, settingsFragment, aboutFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化按钮和 Fragment
btnHome = findViewById(R.id.btn_home);
btnUserList = findViewById(R.id.btn_user_list);
btnSettings = findViewById(R.id.btn_settings);
btnAbout = findViewById(R.id.btn_about);
btnHome.setOnClickListener(this);
btnUserList.setOnClickListener(this);
btnSettings.setOnClickListener(this);
btnAbout.setOnClickListener(this);
homeFragment = new HomeFragment();
userListFragment = new UserListFragment();
settingsFragment = new SettingsFragment();
aboutFragment = new AboutFragment();
// 默认显示 HomeFragment
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, homeFragment);
transaction.commit();
}
@Override
public void onClick(View v) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
switch (v.getId()) {
case R.id.btn_home:
transaction.replace(R.id.fragment_container, homeFragment);
break;
case R.id.btn_user_list:
transaction.replace(R.id.fragment_container, userListFragment);
break;
case R.id.btn_settings:
transaction.replace(R.id.fragment_container, settingsFragment);
break;
case R.id.btn_about:
transaction.replace(R.id.fragment_container, aboutFragment);
break;
}
transaction.commit();
}
}
```
其中,MainActivity 中包含了四个按钮和四个 Fragment,当点击按钮时,使用 FragmentTransaction.replace() 方法切换对应的 Fragment。
fragment_user_list.xml:
```
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/user_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
UserListFragment.java:
```
public class UserListFragment extends Fragment {
private ListView userList;
private UserAdapter adapter;
public UserListFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_user_list, container, false);
userList = view.findViewById(R.id.user_list);
adapter = new UserAdapter(getContext(), getUserList());
userList.setAdapter(adapter);
return view;
}
private List<User> getUserList() {
// TODO: 获取用户列表数据
return new ArrayList<>();
}
}
```
其中,UserListFragment 中包含一个 ListView 控件,用于显示用户列表。在 onCreateView() 方法中,加载 fragment_user_list 布局文件,并为 ListView 设置适配器。
UserAdapter.java:
```
public class UserAdapter extends BaseAdapter {
private Context context;
private List<User> userList;
public UserAdapter(Context context, List<User> userList) {
this.context = context;
this.userList = userList;
}
@Override
public int getCount() {
return userList.size();
}
@Override
public Object getItem(int position) {
return userList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_user, parent, false);
}
User user = userList.get(position);
TextView tvName = convertView.findViewById(R.id.tv_name);
TextView tvAge = convertView.findViewById(R.id.tv_age);
tvName.setText(user.getName());
tvAge.setText(String.valueOf(user.getAge()));
return convertView;
}
}
```
其中,UserAdapter 继承自 BaseAdapter,用于将用户列表数据显示在 ListView 中。
以上就是该功能的详细代码实现。需要注意的是,getUserList() 方法和 User 类的实现需要根据具体需求自行实现。