Я работаю над базовым адаптером в Android, и я хочу знать, какой метод overriden получает вызов в BaseAdapter Class, если я нажимаю onBackPress в какой-то активности. Пожалуйста, помогите мне, я искал и не нашел никакого решения.Метод получает вызов onBackPress в android
ответ
Overide onBackPressed в своей деятельности и изменение данных к адаптеру соответственно затем вызвать notifyDataSetChanged
onBackPressed будет активирован в вашем классе активность. Это не событие класса BaseAdapter. Поэтому переопределите метод onBackPressed в классе Activity.
У вас, вероятно, есть 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
{
....................
}
Так что, когда вы нажимаете кнопку назад текущая активность выталкивается форма стек назад, разрушали и предыдущая деятельность в стеке обратно занимает focus.This поведение по умолчанию.
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;
}
вы можете передать активность 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();
, где захотите.