如何在主要活动中调用myCustomAdapter的公共方法?

时间:2017-06-15 18:07:33

标签: java android android-studio realm

我有MainActivity和Adapter。当创建适配器的新实例时,我创建新领域。我怎样才能在onDestroy方法中关闭这个领域? 继承人我的尝试:
MainActivity的onCreate:

public class MainActivity extends AppCompatActivity {
private ExpandableListView myELV;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    final android.support.v7.app.ActionBar actionBar = this.getSupportActionBar();
    myELV = findViewById(R.id.expandable_list_view);
    myAdapter adapter = new myAdapter(getApplicationContext());
    myELV.setAdapter(adapter);

适配器:

public class myAdapter extends BaseExpandableListAdapter{
private Context context;
private Realm realm;


public myAdapter(Context context){
    this.context = context;
}
public void closeRealm(){
    realm.deleteAll();
    realm.close();
}

MainActivity的onDestroy:

    @Override
protected void onDestroy() {
    super.onDestroy();
    ExpandableListAdapter adapter = myELV.getExpandableListAdapter();
    adapter.closeRealm();
}    

但即使是公开的,也无法访问closeRealm()。我想知道为什么?

2 个答案:

答案 0 :(得分:1)

Echoing,@ EpicPandaForce的回答,ExpandableListAdapter是接口类型。您的closeRealm()方法不是该接口中的方法之一。你可以做的一件事就是创建一个扩展ExpandableListAdapter的新接口,并列出你想要的新公共方法的签名。然后,任何实现新接口的类都可以交换为实现新接口的任何其他类。

答案 1 :(得分:1)

是的,使用@ EpicPandaForce的答案,如果有人在将来想知道,我会在代码中发布更改:

    @Override
protected void onDestroy() {
    super.onDestroy();
    myAdapter adapter =  (myAdapter) myELV.getExpandableListAdapter();
    adapter.closeRealm();
}