Ошибка при использовании EndlessAdapter в Android - PullRequest
0 голосов
/ 12 января 2012

При использовании 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 ]

3 голосов
/ 12 января 2012

Невозможно создать экземпляр типа EndlessAdapter с помощью следующего оператора:

EndlessAdapter adapter = new EndlessAdapter(this); 

Конечно. Нет такого конструктора. Документация не ссылается на такого конструктора. Приложение demo/ не использует такой конструктор. Код EndlessAdapter не содержит такого конструктора. Используйте один из определенных конструкторов, пожалуйста. Цитирование документации:

EndlessAdapter имеет два конструктора. Исходный принимает ListAdapter в качестве параметра, представляющего существующий адаптер, который необходимо сделать бесконечным. Ваш подкласс EndlessAdapter должен будет переопределить этот конструктор и соединиться вверх. Например, DemoAdapter внутри демонстрационного проекта принимает ArrayList<String> в качестве параметра конструктора и переносит его в ListAdapter для предоставления EndlessAdapter.

Второй конструктор принимает Context и идентификатор ресурса вместе с ListAdapter. Они будут использованы для создания заполнителя (см. Ниже).


Размещен лог кот.

Нет, вы не сделали.

Я могу рассказать вам о проблеме, которая находится в manifest.xml. Я должен добавить пакет com.commonsware.cwac.adapter. Проблема в том, что мой основной пакет - com.litest.main, который я поместил в manifest.xml

Вам не нужно иметь com.commonsware.cwac.adapter в любом месте вашего манифеста. Пожалуйста, смотрите проект demo/ в репозитории GitHub.

0 голосов
/ 12 января 2012

Опубликовать фактическую ошибку logcat.По всей вероятности, вы пытаетесь создать экземпляр в точке, где «это» не относится к надлежащему Context.Скорее всего, вам нужно будет добавить имя вашего Activity класса, например new EndlessAdapter(MyActivity.this);

...