Çocuk sahiplerimden birinin belirli bir örneğini (Base is GameHolder) döndürmek istiyorum.Android/Java'da bir ViewHolder kullanan genel sınıflar
İşte@Override
public GameHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
LayoutInflater inflater = LayoutInflater.from(getActivity());
View view = inflater.inflate(mHolderMap.get(viewType).getLayoutResID(), parent, false);
//I'm trying to avoid using this switch by using a HashMap because it is going to continue growing as I add more leagues.
/*switch(viewType)
{
case -1:
view = inflater.inflate(R.layout.list_header_item, parent, false);
return new HeaderGameHolder(view, getActivity());
case 1:
view = inflater.inflate(R.layout.list_nba_game_item, parent, false);
return new NBAGameHolder(view, getActivity());
case 2:
view = inflater.inflate(R.layout.list_mlb_game_item, parent, false);
return new MLBGameHolder(view, getActivity());
default:
return null;
}*/
//this is where I'm having trouble, I don't know how to return the correct type.
Class<? extends GameHolder> myClass = mHolderMap.get(viewType).getHolderClass();
return new myClass(view, getActivity());
}
benim HashMap ve onun kurulum yöntemidir: Burada ben ne var, bunu sorun yaşıyorum
private class ViewMapHelper
{
int mLayoutResID;
Class<? extends GameHolder> mHolderClass;
public ViewMapHelper(int layoutResID, Class<? extends GameHolder> holderClass)
{
mLayoutResID = layoutResID;
mHolderClass = holderClass;
}
public int getLayoutResID()
{
return mLayoutResID;
}
public Class<? extends GameHolder> getHolderClass()
{
return mHolderClass;
}
}
: Burada
private HashMap<Integer, ViewMapHelper> mHolderMap = new HashMap<>();
private void setupGameHolderMap()
{
mHolderMap.put(LeagueInfo.headerID, new ViewMapHelper(R.layout.list_header_item, HeaderGameHolder.class));
mHolderMap.put(LeagueInfo.nbaID, new ViewMapHelper(R.layout.list_nba_game_item, NBAGameHolder.class));
mHolderMap.put(LeagueInfo.mlbID, new ViewMapHelper(R.layout.list_mlb_game_item, MLBGameHolder.class));
}
benim ViewMapHelper sınıftır Kodun ilk bloğunda görebileceğiniz gibi, benim sorunum burada. İkinci satır çalışmaz:
Class<? extends GameHolder> myClass = mHolderMap.get(viewType).getHolderClass();
return new myClass(view, getActivity());
Ben karma haritasında kaydedilen sınıfa karşılık gelen tutucu türü dönmek isterler. Java'nın jenerik ve şablon sınıflarını kullanmakta yeniyim, bu yüzden birilerinin bana doğru yönde yönlendirebileceğini umuyorum. Herhangi bir yardım için teşekkürler!