2016-05-05 8 views
-3

それぞれのインスタンス化でarrayObjectsを試しています。私がしようArrayオブジェクト/クラス

は、アレイ内の複数のオブジェクトを置くが、私は正しいsintaxに

を知らない私がしようとしている:

Class[] classes = new Class[]{ViewHolder1.class,ViewHolder2.class}; 

を私のアダプタでいる:

RecyclerView.ViewHolder viewHolder; 
Class[] classes; // -> will get values 

私がすることができますdo:

viewHolder = new ViewHolder1(v1); 

しかし、私は、アレイからの私のオブジェクトをアクセスもできますかわからない:

viewHolder = new classes[i](v1); //can't not find simbol class. 

私は[] //クラス[]オブジェクト、そしてどのように正しいインスタンス化が必要な場合、私は知りません。私はあなたのコメントから得たもの

+0

Javaについての理解を深めるためにチュートリアルを読んでください – Sanjeev

+0

私の問題は、 "view"が "onCreateViewHolder"に初期化されていることが分かっている場合、オブジェクトを置くことができません。 onCreateViewHolderを作成しているときに呼び出すオブジェクトの名前です。パスアナには「クラス」の配列が必要です。次に、これらの「クラス」クラスviewHolder = new [](view)//これはできません。ご理解頂けるとありがたいです。これはAndroidの問題ですが、Javaのロジックです。 – stackcalimbo

答えて

0

あなたはClass型オブジェクトの配列を持っており、それはあなたのクラスの0番目の要素についてですので、もしあなたが、あなたがreflectionを経由してそれを達成することができるClass

Objectをインスタンス化したい、ですこのようにする必要があります:

Constructor ctor = classes[0].getDeclaredConstructor(<Class of v1 Object>); 
ctor.setAccessible(true); 

viewHolder = ctor.newInstance(v1); 

このコードは、反射がどのように使用できるかについてのアイデアを提供するためのものです。あなたは完全に機能するように調整する必要があります。

希望します。

+0

私が今見つけた最高のソリューションは、本当に良いようです()。 "v1はビューです"、どのようにしてgetDeclaredConstructorにビューを渡すことができますか? – stackcalimbo

+0

'View.class'を渡します – Sanjeev

+0

素晴らしいですね! – stackcalimbo

関連する問題