Java 在其他类中使用抽象变量

Java 在其他类中使用抽象变量,java,android,listview,abstract-class,Java,Android,Listview,Abstract Class,我不熟悉java和android开发。我已经创建了一个抽象类,用于在我的应用程序中显示listview。我的想法是,我只会使用common listview更改其适配器。但我不会让抽象类中定义的listview在扩展它的类中使用。请帮助我 抽象类代码 public abstract class GeneralListView extends MasterFragment { protected ListView listView; @Nullable @Over

我不熟悉java和android开发。我已经创建了一个抽象类,用于在我的应用程序中显示listview。我的想法是,我只会使用common listview更改其适配器。但我不会让抽象类中定义的listview在扩展它的类中使用。请帮助我

抽象类代码

 public abstract class GeneralListView extends MasterFragment {

    protected ListView listView;



    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.common_list, container, false);
        listView = (ListView) view.findViewById(R.id.lv_common_list);
        return view;
    }

    public abstract void initializeList();

    public ListView getListView() {
        return listView;
    }


}
类,它扩展了上述类

 public class Test extends GeneralListView {

    private ListView listView;

    @Override
    public void initializeList() {
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(contextFragment, android.R.layout.activity_list_item, new String[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "a", "b", "c", "d", "e", "f", "g", "h", "i"});
        listView.setAdapter(adapter);

    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        getListView();
        initializeList();
    }

    @Override
    public ListView getListView() {
        return listView;
    }
}
除去

private ListView listView; 

您在测试子类中重写listView对象,并使用该对象代替GeneralListView中的实例。

删除

private ListView listView; 


您重写了测试子类中的listView对象,并使用该对象而不是GeneralListView中的实例。

您是否可以检查是否调用了onCreateView方法,因为我只能看到该方法初始化listView引用

您能否检查是否调用了onCreateView方法,因为我只能看到该方法初始化listView引用

不需要重写子类“Test”类中的getListVIew(),也不需要私有ListView ListView;属性在“Test”类中

要调用超类中的方法或变量,如果您不使用任何同名变量,则可以直接调用它。在本例中,您可以使用super关键字调用listView

super.listView 
super.getListView();
并使用super关键字调用方法getListView()

super.listView 
super.getListView();

不需要重写子类“Test”类中的getListVIew(),也不需要私有ListView ListView;属性在“Test”类中

要调用超类中的方法或变量,如果您不使用任何同名变量,则可以直接调用它。在本例中,您可以使用super关键字调用listView

super.listView 
super.getListView();
并使用super关键字调用方法getListView()

super.listView 
super.getListView();

您必须删除

private ListView listView;
语句,或者在构造函数中添加以下内容

public Test(){
listView = super.getListView;//I assume this would return initialized listview
}

您必须删除

private ListView listView;
语句,或者在构造函数中添加以下内容

public Test(){
listView = super.getListView;//I assume this would return initialized listview
}