0

EndlessAdapterを使用しているときに、次のエラーに遭遇しました。

次のステートメントではタイプ EndlessAdapter をインスタンス化できません:

EndlessAdapter adapter = new EndlessAdapter(this); 

EndlessAdapter.java でアダプタ クラスを定義し、インポートしました。

これは私のコード全体です:

package com.example.litest;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import com.example.utilities.TestListAdapter;
import com.example.utilities.EndlessAdapter;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;



public class ListActivity extends Activity{
    public final static String ITEM_TITLE = "title";  
    public final static String ITEM_CAPTION = "caption";  

    public Map<String,?> createItem(String title, String caption) {  
        Map<String,String> item = new HashMap<String,String>();  
        item.put(ITEM_TITLE, title);  
        item.put(ITEM_CAPTION, caption);  
        return item;  
    }  

    @Override  
    public void onCreate(Bundle icicle) {  
        super.onCreate(icicle);  

        List<Map<String,?>> security = new LinkedList<Map<String,?>>();  
        security.add(createItem("Remember passwords", "Save usernames and passwords for Web sites"));  
        security.add(createItem("Clear passwords", "Save usernames aznd passwords for Web sites"));  
        security.add(createItem("Show security warnings", "Show warning if there is a problem with a site's security"));  
        for(int n=10; n>0; n--)
            security.add(createItem("Clear passwords", "Save usernames and passwords for Web sites"));  

        // create our list and custom adapter  
        EndlessAdapter adapter = new EndlessAdapter(this) 


        //adapter.addSection("Security", new EndlessAdapter(this, security, R.layout.list_complex,new String[] { ITEM_TITLE, ITEM_CAPTION }, new int[] { R.id.list_complex_title, R.id.list_complex_caption }));  

        ListView list = new ListView(this);  
        list.setAdapter(adapter);  
        this.setContentView(list);  

    }  

}  

Logcat: http://pastebin.com/2WnnJ9KA

4

2 に答える 2

3

次のステートメントではタイプ EndlessAdapter をインスタンス化できません:

EndlessAdapter adapter = new EndlessAdapter(this); 

もちろん。そのようなコンストラクタはありません。ドキュメントはそのようなコンストラクターを引用していません。アプリはそのdemo/ようなコンストラクターを使用しません。へのコードにEndlessAdapterは、そのようなコンストラクターは含まれていません。定義されたコンストラクターの 1 つを使用してください。ドキュメントの引用:

EndlessAdapterには 2 つのコンストラクターがあります。元のものはListAdapterパラメーターとして a を取り、既存のアダプターを無限にすることを表します。サブクラスEndlessAdapterは、このコンストラクターをオーバーライドし、上にチェーンする必要があります。たとえばDemoAdapter、デモ プロジェクトの内部ではArrayList<String>、コンストラクタ パラメータとして を受け取り、それを にラップしてListAdapterに提供しEndlessAdapterます。

2 番目のコンストラクターは、Contextリソース ID と を受け取りますListAdapter。これらは、プレースホルダーの作成に使用されます (以下を参照)。


丸太猫を投稿しました。

いいえ、あなたはしませんでした。

私はcom.commonsware.cwac.adapterパッケージを追加しなければならないmanifest.xmlにある問題をあなたに伝えることができます。ここでの問題は、私のメイン パッケージが com.litest.main であり、これが manifest.xml に含まれていることです。

com.commonsware.cwac.adapterマニフェストのどこにも必要ありません。demo/GitHub リポジトリのプロジェクトを参照してください。

于 2012-01-12T12:20:44.160 に答える