0

Google のソース コードを使用して、最近の通話の類似アクティビティを作成しています。ダイヤラー、最近の通話、連絡先のカスタム ビューを備えたアプリを作成する必要があるため、最初のステップはカスタム ダイヤラーを作成することでした。次に、通話履歴を作成しましたが、外観が十分ではなかったため、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

    ...

これらは 2 つの主要なエラーです。元のファイルでは、mAdapter は同じ方法で宣言されており、これらのエラーはありません。また、他に 2 つのエラーがあります。

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

なんらかの宣言に違いないのですが、その理由や何をすべきかわかりません。

アップデート

Eugene's answer のおかげで、クラスをアダプターに拡張することを解決しました。しかし、いくつかのドローアブルを実装するときに、次の問題が発生しました。私は 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);
    }
4

1 に答える 1

0

アダプターは listadapter インターフェースを実装していません 元のアダプターは、すでに ListAdapter を実装している ResourceCursorAdapter を拡張します

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

しかし、あなたのアダプターはそうではありません。

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

一部のクラスを拡張するか、ListAdapter自分で実装する必要があります

他の 2 つのエラーは同じ起源から発生します。そのようなメソッドを実装していないか、既にそれらを持っているクラスを拡張していないため、そのようなメソッドがありません。

コーディング頑張ってください:)

于 2013-10-22T08:11:42.437 に答える