0

ListView の simpleAdapter を作成するために、この例を試しています。だから、私はすべて作成しましたが、この行を変更すると

List<Movie> movies = getData2();
ListAdapter adapter = new MovieListAdapter(this, movies, android.R.layout.simple_list_item_2, new String[]{Movie.KEY_NAME, Movie.KEY_YEAR}, new int[]{android.R.id.text1, android.R.id.text2});

このエラーが発生しました:

コンストラクターは未定義です

MovieListAdapter(ImdbApiActivity, List<Movie>, int, String[], int[])

これは同じ例です。映画の車を変更したところです。この例は 2009 年のものであることはわかっています。私のプロジェクトのターゲットは 2.1 です。バージョン間に互換性がないか、エラーがありますか?

私の simpleadapter クラスは次のようになります。

public class MovieListAdapter extends SimpleAdapter {

    private List < Movie > movies;

    private int[] colors = new int[] {
        0x30ffffff, 0x30808080
    };

    @SuppressWarnings("unchecked")
    public MovieListAdapter(Context context, List <? extends Map < String, String >> movies,
        int resource,
        String[] from,
        int[] to) {
        super(context, movies, resource, from, to);
        this.movies = (List < Movie > ) movies;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);

        int colorPos = position % colors.length;
        view.setBackgroundColor(colors[colorPos]);
        return view;
    }
}

私が見逃しているエラーはありますか?これを達成するための「現代的な」方法はどれですか?

編集:この例では、コンテキストパラメータまたはリストの変更は機能しませんでした。私の Movie クラスは Hashmap から拡張されています。他のアイデアはありますか?ありがとう!

import java.util.HashMap;

public class Movie extends HashMap {

    public String year;
    public String name;
    public static String KEY_YEAR = "year";
    public static String KEY_NAME = "name";

    public Movie(String name, String year) {
        this.year = year;
        this.name = name;
    }

    @Override
    public String get(Object k) {
        String key = (String) k;
        if (KEY_YEAR.equals(key))
            return year;
        else if (KEY_NAME.equals(key))
            return name;
        return null;
    }
}
4

2 に答える 2

2

カスタム アダプター クラス コンストラクターのパラメーターに問題があるようです。

List<? extends Map<String, String>>アクティビティからオブジェクトを渡すムービーとして定義しましたList<Movies>。そのため、そのようなコンストラクターは定義されていません。

コンストラクタのパラメータを に変更してみてくださいList<Movies> movies。これで問題が解決すると思います!

于 2012-08-29T04:28:42.557 に答える
0

変更してみる

`ListAdapter adapter = new MovieListAdapter(this, movies, android.R.layout.simple_list_item_2, new String[]{Movie.KEY_NAME, Movie.KEY_YEAR}, new int[]{android.R.id.text1, android.R.id.text2});`

`ListAdapter adapter = new MovieListAdapter(YourClass.this, movies, android.R.layout.simple_list_item_2, new String[]{Movie.KEY_NAME, Movie.KEY_YEAR}, new int[]{android.R.id.text1, android.R.id.text2});`

this別のインスタンスを参照している可能性があるためです。

YourClass.thisのインスタンスへの参照YourClass.classです。によって返されたコンテキストを送信することもできますgetApplicationContext()

于 2012-08-29T04:06:42.160 に答える