代码之家  ›  专栏  ›  技术社区  ›  masmic

RecentCalls活动适配器

  •  0
  • masmic  · 技术社区  · 11 年前

    我正在使用谷歌源代码来构建一个最近的call look like活动。我必须创建一个具有拨号器、最近通话和联系人自定义视图的应用程序,所以我的第一步是创建一个自定义拨号器。然后,我创建了一个通话日志,但外观不够好,所以我使用谷歌的联系人应用程序包来获取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的回答,我已经解决了将类扩展到适配器的问题。但现在我在实现一些drawables时遇到了以下问题。我知道我不能引用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 回复  |  直到 6 年前
        1
  •  0
  •   Eugene    11 年前

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

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

    但您的适配器没有。

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

    您应该扩展一些类,或者实现 ListAdapter 你自己

    另外两个错误来自同一个来源——您只是没有这样的方法,因为您还没有实现它们,也没有扩展已经拥有它们的类。

    祝编码好运:)