在Android中使用EndlessAdapter时出错

时间:2012-01-12 03:23:46

标签: android commonsware-cwac

使用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

2 个答案:

答案 0 :(得分:3)

  

无法在以下语句中实例化EndlessAdapter类型:

EndlessAdapter adapter = new EndlessAdapter(this); 

当然。没有这样的构造函数。文档没有引用这样的构造函数。 demo/应用不使用此类构造函数。 EndlessAdapter的代码不包含这样的构造函数。请使用其中一个已定义的构造函数。引用文档:

  

EndlessAdapter有两个构造函数。原始的一个以ListAdapter为参数,表示现有的适配器是无穷无尽的。您的EndlessAdapter子类需要覆盖此构造函数并向上链。例如,演示项目中的DemoAdapterArrayList<String>作为构造函数参数,并将其包装在ListAdapter中以提供给EndlessAdapter

     

第二个构造函数带有Context和资源ID以及ListAdapter。这些将用于创建占位符(见下文)。


  

发布日志猫。

不,你没有。

  

我可以告诉你问题,就是在manifest.xml中我要添加com.commonsware.cwac.adapter包。这里的问题是,我的主要包是com.litest.main,这是我在manifest.xml中放入的

您的清单中的任何位置都不需要com.commonsware.cwac.adapter。请参阅GitHub存储库中的demo/项目。

答案 1 :(得分:0)

发布实际的logcat错误。很可能,您试图在“this”未引用正确的Context的位置对其进行实例化。您可能需要添加Activity类的名称,例如new EndlessAdapter(MyActivity.this);