适用于RecentCalls活动的适配器

时间:2013-10-22 08:01:43

标签: android adapter phone-call

我正在使用谷歌源代码来构建最近看起来类似的活动。我必须创建一个带有拨号器,最近通话和联系人的自定义视图的应用程序,所以我的第一步是创建一个自定义拨号器。然后,我创建了一个通话记录,但外观并不好看,所以我得到谷歌的联系人应用包以获得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)

它必须是某种声明,但我不知道为什么或做什么。

更新

由于Eugene的回答,我已经解决了将类扩展到适配器的问题。但是现在我在实现一些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);
    }

1 个答案:

答案 0 :(得分:0)

您的适配器未实现listadapter接口 原始适配器扩展了ResourceCursorAdapter,它已经实现了ListAdapter

final class RecentCallsAdapter extends ResourceCursorAdapter
        implements Runnable, ViewTreeObserver.OnPreDrawListener, View.OnClickListener {

但你的适配器没有。

final class RecentCallsAdapter implements ViewTreeObserver.OnPreDrawListener, View.OnClickListener, Runnable

你应该扩展一些类,要么自己实现ListAdapter

其他两个错误来自同一个来源 - 你只是没有这样的方法,因为你没有实现它们,也没有扩展已经拥有它们的类。

祝好运编码:)