0

我正在使用 Android 中的 Base 适配器,我想知道如果我在某些活动中按下 onBackPress,则在 BaseAdapter 类中调用哪个被覆盖的方法。请帮助我,我已经搜索并没有找到任何解决方案。

4

4 回答 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 回答