2013-10-22 66 views
0

我正在使用Google源代碼構建近期調用外觀相似的活動。我必須創建一個具有撥號程序,最近通話和聯繫人的自定義視圖的應用程序,因此我的第一步是創建自定義撥號程序。然後,我創建了一個通話記錄,但外觀不夠好,所以我得到谷歌的聯繫人應用程序包以獲得最新的通話活動並適應我的應用程序。適用於RecentCalls活動的適配器

現在,我已經有了應用程序的工作,但我有一些我不知道如何解決的錯誤。這是與最相關的部分代碼提取試圖解決這個錯誤:

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 

    ... 

這些是2個主要錯誤。在原始文件中,mAdapter的聲明方式相同,並且沒有這些錯誤。 此外,還有其他2個錯誤:

mAdapter.isGroupHeader(menuInfo.position) 
mAdapter.getGroupSize(menuInfo.position) 

它必須是某種聲明,但我不知道爲什麼還是做什麼。

UPDATE

我已經解決了這個類擴展適配器感謝尤金的答案。但是現在我在執行一些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); 
    } 

回答

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自己

其他兩個錯誤都來自同一產地 - 你根本沒有這樣的方法,因爲你還沒有實現他們,也有你擴展了已經擁有它們的課程。

祝編碼:)

+0

是的,我知道,但原來的文件也不對,所以我認爲這是不necesary ... – masmic

+0

在實現這個interfaze,它會自動生成功能,如的getItem( )等等。我不明白的是爲什麼在原始文件中沒有這些函數,並且它不顯示錯誤 – masmic

+0

我編輯了我的答案 – Eugene

相關問題