gpt4 book ai didi

android - "android-support-v7-appcompat"的ActionBarActivity和ListActivity在同一个activity

转载 作者:IT老高 更新时间:2023-10-28 23:28:40 24 4
gpt4 key购买 nike

如何在扩展ListActivity的Activity中使用“android-support-v7-appcompat”的ActionBarActivity。

例如我有一个 Activity

public class xxxxxListActivity
extends ListActivity implements OnItemSelectedListener {
// ...................
}

在上述 Activity 中,我想使用“ActionBarActivity”,但由于 java dosent 支持多重继承,我无法使其正常工作。

最佳答案

这是一个 ActionBarListActivity 的实现:

public abstract class ActionBarListActivity extends ActionBarActivity {

private ListView mListView;

protected ListView getListView() {
if (mListView == null) {
mListView = (ListView) findViewById(android.R.id.list);
}
return mListView;
}

protected void setListAdapter(ListAdapter adapter) {
getListView().setAdapter(adapter);
}

protected ListAdapter getListAdapter() {
ListAdapter adapter = getListView().getAdapter();
if (adapter instanceof HeaderViewListAdapter) {
return ((HeaderViewListAdapter)adapter).getWrappedAdapter();
} else {
return adapter;
}
}
}

与常规 ListActivity 一样,您需要一个包含 ID 为 android.R.id.list(XML 中为“@android:id/list”)的 ListView 的布局。

getListAdapter() 的作用是处理标题 View 已添加到 ListView 的情况。似乎 ListView 将自己的适配器设置为 HeaderViewListAdapter ,因此我们必须尝试获取包装好的适配器以防止转换错误。

编辑:尝试添加此功能以满足 onListItemClick 的需要:

protected void onListItemClick(ListView lv, View v, int position, long id) {
getListView().getOnItemClickListener().onItemClick(lv, v, position, id);
}

关于android - "android-support-v7-appcompat"的ActionBarActivity和ListActivity在同一个activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18403647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com