我正在研究Android中的Base适配器,如果我在某些活动中按onBackPress,我想知道在BaseAdapter类中调用哪个overriden方法。请帮助我,我已经搜索过,并没有找到任何解决方案。
答案 0 :(得分:1)
您可能拥有listview,并且您为listview设置了自定义适配器。 Listview在您的活动中。
class MyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstancestate)
{
setContentView(R.layout.main);
ListView lv= (ListView) findViewById(R.id.listview);
CustomAdapter cus= new CustomAdapter(MyActivity.this);
lv.setAdapter(cus);
}
}
class CustomAdapter extends BaseAdapter
{
....................
}
所以当你按下后退按钮时,当前活动会从后面的堆栈弹出,被破坏并且后面堆栈中的前一个活动会成为焦点。这是默认行为。
http://developer.android.com/guide/components/tasks-and-back-stack.html
您可以覆盖活动中的onKeyDown(params)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
//do something
finish();
return;
}
答案 1 :(得分:0)
在您的活动中覆盖onBackPressed并相应地将数据更改为适配器,然后致电notifyDataSetChanged
答案 2 :(得分:0)
onBackPressed将在您的Activity类中激活。它不是BaseAdapter类的事件。因此,在Activity类中覆盖onBackPressed方法。
答案 3 :(得分:0)
您可以通过reference
将活动constructor
传递给适配器,例如:
CustomAdapter customAdapter=CustomAdapter(getApplicationContext(),arrayList,HomeActivity.this);
并在您的自定义适配器
中public class CustomAdapter extends BaseAdapter {
Context context;
ArrayList<CategoryModel> arrCategoryModel;
AppCompatActivity activity;
public CustomAdapter(Context context, ArrayList<CategoryModel> arrCategoryModel, AppCompatActivity activity)
{
this.context=context;
this.arrCategoryModel=arrCategoryModel;
this.activity=activity;
} }
现在,您可以随时随地拨打activity.onBackPressed();
。