java - Android:代码重构建议

标签 java android android-layout

我正在创建一个待办事项列表类型的应用程序。这是一个有 7 个屏幕的应用程序,用于设定目标并完成目标。截图here 。现在,在编码时,我意识到代码中有很多冗余,例如:

1> 对于一周中的 7 天,我需要创建 7 个 fragment ,然后对于所有 7 个 fragment ,我需要执行完全相同的操作。我可以在不使用 7 个 fragment 的情况下完成此操作吗?

2> 现在有 15 个复选框和 15 个 TextView - 我需要获取引用,然后在每个复选框上分别执行 onclick 操作,并在用户尝试修改它们时对每个复选框执行 settext 和 gettext。

这是 TextView 修改代码之一:

 ptext2 = (TextView) view.findViewById(R.id.p_textview2);
        ptext2.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
                alertDialog.setTitle("Target");
                alertDialog.setMessage("Set your target");
                final EditText input = new EditText(getActivity());
                alertDialog.setView(input);
                alertDialog.setPositiveButton("Set", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String targetInp = input.getText().toString();
                        ptext2.setText(targetInp);
                        p2 = ptext2.getText().toString();
                        addEventsToDB();
                    }
                });
                alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                    }
                });
                alertDialog.show();
                return true;
            }
        });

类似地,textview 还有 15 个,然后选中我需要对所有 7 个 fragment 执行此操作。 Here is my full code of one of the fragment

由于此类应用程序是大多数学习 Android 开发的用户的第一个应用程序,应该如何改进此代码?

编辑: 对于多个按钮 onclick 监听器,我正在创建一个内部类,然后使用 switch 进行按钮特定操作。

switch(view.getId()){
    case R.id.id1:
        //do something
        break;
.....
} 

来自this SO answer 。现在我只需要弄清楚如何处理 7 个 fragment (可以只用一个 fragment 来完成吗?)

最佳答案

View.OnLongClickListener 类的实现命名为:

class OnDayClickListener extends View.OnLongClickListener {

    @Override
    public boolean onLongClick(final View view) {
        // here use view instead of ptext2
    }
}

然后使用

ptext2.setOnLongClickListener(new OnDayClickListener());
// this repeats for every textbox

关于java - Android:代码重构建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29321348/

相关文章:

android - 列表项背景上的进度条

java - 大米之谜 - 为什么 "If else"语句不能正确循环?

java - 没有发现行异常

java - 从数组列表中获取绑定(bind)值

android - 函数如何知道哪个可点击的textView已通过onClick调用了它?

java - Android CardView 动画不正确

Android L 插入不需要的 Intent Extras

android日志信息是 “W/OpenGLRenderer: Incorrectly called buildLayer on View”,这是什么意思?

android - 无法在 getView 中选中/取消选中 CheckedTextView

java - 为什么 Calendar.JUNE 将月份设置为七月?