0

最終的にリストビューにデータを入力する一連のカスタム ArrayAdapter にデータを入力する一連のカスタム オブジェクトがあります。私のアクティビティ/フラグメントでは、同じパターンを使用して、Web サーバーからコンテンツを取得し、型指定された配列リストを作成し、配列リストを適切なアダプターに配置してから、アダプターをリストビューに割り当てます。

私がやりたいことは、このパターンが必要なすべてのインスタンスに対してこのプロセスを管理できる pojo を作成することです。ロジックの基本に問題はありませんが、細部にこだわっています。

たとえば、私がやりたいことはこれです...

if (x == y) {
    ArrayList<SpecificObject> a = new ArrayList<SpecificObject>();
} else if (x == z) {
    ArrayList<DifferentObject> a = new ArrayList<DifferentObject>();
} else {
    ArrayList<AnotherObject> a = new ArrayList<AnotherObject>();
}

もちろん、ここでの問題は、コンパイラが「a」が初期化されていないことを示唆していることです。この種の問題を回避しないと、概念的な観点から、リスト管理を処理できる単一の pojo を作成することはできません。

私の質問は次のとおりです。特定のオブジェクト タイプをいくつでも処理する必要がある場合に、このプロセスに対する一般的なアプローチを開発するにはどうすればよいでしょうか。

4

1 に答える 1

0

1 つの解決策は、オブジェクトの ArrayList を保持し、割り当て時にキャストすることです。

 ArrayList<Object> a = new ArrayList<Object>();

次に、それを割り当てる必要がある場合は、次のことができます。

if (x = y) {
    assignCall(ArrayList<SpecificObject>) a);
}
...

ただし、実行時にキャストをチェックできないため、警告が表示され、間違ったものをキャストすると ClassCastExceptions が発生することに注意してください。私は通常、物事を設計するためのより良い方法があるかもしれないというこれらの警告に注意しますが、それはあなた次第です;-)

于 2013-02-02T13:31:06.507 に答える