我正在使用 Android 中的 Base 适配器,我想知道如果我在某些活动中按下 onBackPress,则在 BaseAdapter 类中调用哪个被覆盖的方法。请帮助我,我已经搜索并没有找到任何解决方案。
问问题
1220 次
4 回答
1
您可能有列表视图,并且为列表视图设置了自定义适配器。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;
}
于 2013-04-18T07:17:47.957 回答
0
onBackPressed 将在您的 Activity 类中激活。它不是 BaseAdapter 类的事件。因此,在 Activity 类中覆盖您的 onBackPressed 方法。
于 2013-04-18T07:04:07.877 回答
0
在您的活动中覆盖 onBackPressed并相应地将数据更改为适配器,然后调用notifyDataSetChanged
于 2013-04-18T06:49:55.107 回答
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();
随时随地拨打电话。
于 2017-07-18T10:18:49.380 回答