有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在多个活动和片段中使用相同的微调器。实施它的最佳方式是什么?

假设我有一个10个国家(字符串)的旋转视图。 我想在多个活动、片段、警报对话框等中使用此微调器

我怎样才能高效地完成并节省代码行?哪种方式最好

我首先想到的是创建一个类来创建微调器并扩展微调器小部件类。然后创建对象等。然而,作为乞丐,这看起来有点复杂,有没有更简单的方法

编辑: 微调器仅动态创建。默认情况下,它有10个条目,但会根据数据库条目逐渐填充


共 (3) 个答案

  1. # 1 楼答案

    扩展微调器类本身

    您可以在构造函数内初始化适配器,使用AsyncTask动态加载数据库条目,并使用onAttachedToWindowonDetachedFromWindow管理资源使用

    我通常在遇到类似问题时这样做,它很方便,易于开发和使用

  2. # 2 楼答案

    在填充微调器的任何类中创建一个公共静态方法(但可能是一个直观的查找*)。它可以将上下文、数据库等以及微调器本身作为输入。然后,您可以从任何片段或活动调用相同的方法,并始终得到相同的结果。只需创建布局(例如使用setContentView),从布局中获取对微调器的引用,并将其传递给populater方法

    例如:

    //in Activity
    public void onCreate(Bundle bundle){
        super.onCreate(bundle);
    
        DatabaseHelper myDataBaseHelper = ...;//
    
        setContentView(R.layout.my_layout);
        Spinner spinner = (Spinner)findViewById(R.id.my_spinner);
        Util.populateStandardSpinner(myDataBaseHelper, spinner, 
            getApplicationContext());
    
        //...
    }
    
    
    //Another class
    public class Util{
        public static void populateStandardSpinner(DatabaseHelper dbHelper, 
                Spinner spinner, Context context) {
            //Get cursor from dbHelper
            //Create adapter for cursor data and apply it to spinner
    }
    

    我想您也可以扩展Spinner类,但我的偏好是避免将数据直接编码到小部件中。这将打破模型-视图-控制器的设计模式


    *我有时只是创建一个名为Util的类,在其中我放置了这样方便的静态方法。或者,如果你有一个数据库助手类,那可能是一个直观的地方

  3. # 3 楼答案

    您可以为此创建一个单独的布局文件,并且该文件中只有微调器

    无论你在哪里需要它,你都可以把它包括在你的布局中,比如

    <include layout="@layout/spinnerLayout" />