我正在使用谷歌的源代码来构建一个最近调用看起来相似的活动。我必须创建一个具有拨号器、最近通话和联系人的自定义视图的应用程序,所以我的第一步是创建一个自定义拨号器。然后,我创建了一个通话记录,但外观不够好,所以我获取了 google 的联系人应用程序包来获取 RecentCallsActivity 并适应我的应用程序。
现在,我的应用程序几乎可以运行了,但是我有一些我不知道如何解决的错误。这是与尝试解决此错误最相关部分的代码的摘录:
public class RecentCallsListActivity extends ListActivity implements View.OnCreateContextMenuListener {
...
RecentCallsAdapter mAdapter;
....
final class RecentCallsAdapter implements ViewTreeObserver.OnPreDrawListener, View.OnClickListener, Runnable {
...
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
mAdapter = new RecentCallsAdapter();
getListView().setOnCreateContextMenuListener(this);
setListAdapter(mAdapter); // The method SetListAdapter (ListAdapter) in the type ListActivity is not aplicable for the arguments (RecentCallsListActivity.RecentCallsAdapter)
mQueryHandler = new QueryHandler(this);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfoIn) {
AdapterView.AdapterContextMenuInfo menuInfo;
Cursor cursor = mAdapter.getItem(menuInfo.position); //The method getItem(int) is undefined for the type RecentCallsListActivity.RecentCallsAdapter
...
这是两个主要错误。在原始文件中,mAdapter 的声明方式相同,并且没有这些错误。此外,还有其他 2 个错误:
mAdapter.isGroupHeader(menuInfo.position)
mAdapter.getGroupSize(menuInfo.position)
它必须是某种声明,但我不知道为什么或该怎么做。
更新
多亏了尤金的回答,我已经解决了将一个类扩展到适配器的问题。但是现在我在实现一些drawable时遇到了以下问题。我知道我不能参考 android.internal.R 所以事情就是为此找到一个解决方案:
protected void bindGroupView(View view, Context context, Cursor cursor, int groupSize,
boolean expanded) {
final RecentCallsListItemViews views = (RecentCallsListItemViews) view.getTag();
int groupIndicator = expanded
? com.android.internal.R.drawable.expander_ic_maximized //CANNOT BE RESOLVED
: com.android.internal.R.drawable.expander_ic_minimized; //CANNOT BE RESOLVED
views.groupIndicator.setImageResource(groupIndicator);
views.groupSize.setText("(" + groupSize + ")");
bindView(context, view, cursor);
}