问题
How would I be able to iterate in a fragment? For example I have been doing like this without iterating since I could not figure out the syntax to only change the last part of the ids:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment1,container, false);
iv_main_gongcast0 = (ImageView) rootView.findViewById(R.id.iv_main_gongcast0);
iv_main_gongcast1 = (ImageView) rootView.findViewById(R.id.iv_main_gongcast1);
iv_main_gongcast2 = (ImageView) rootView.findViewById(R.id.iv_main_gongcast2);
iv_main_gongcast3 = (ImageView) rootView.findViewById(R.id.iv_main_gongcast3);
...
tabHost1 = (FragmentTabHost)rootView.findViewById(R.id.tabhost1);
tabHost1.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent1);
tabHost1.addTab(tabHost1.newTabSpec("frag6").setIndicator(null, getResources().getDrawable(R.drawable.main1selector)), Fragment6.class, null);
tabHost1.addTab(tabHost1.newTabSpec("frag7").setIndicator(null, getResources().getDrawable(R.drawable.main2selector)), Fragment7.class, null);
tabHost1.addTab(tabHost1.newTabSpec("frag8").setIndicator(null, getResources().getDrawable(R.drawable.main3selector)), Fragment8.class, null);
tabHost1.addTab(tabHost1.newTabSpec("frag9").setIndicator(null,getResources().getDrawable(R.drawable.main4selector)), Fragment9.class, null);
tabHost2 = (FragmentTabHost)rootView.findViewById(R.id.tabhost2);
tabHost2.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent2);
tabHost2.addTab(tabHost2.newTabSpec("frag10").setIndicator(null, getResources().getDrawable(R.drawable.main1selector)), Fragment10.class, null);
tabHost2.addTab(tabHost2.newTabSpec("frag11").setIndicator(null, getResources().getDrawable(R.drawable.main2selector)), Fragment11.class, null);
tabHost2.addTab(tabHost2.newTabSpec("frag12").setIndicator(null, getResources().getDrawable(R.drawable.main3selector)), Fragment12.class, null);
tabHost2.addTab(tabHost2.newTabSpec("frag13").setIndicator(null, getResources().getDrawable(R.drawable.main4selector)), Fragment13.class, null);
tabHost3 = (FragmentTabHost)rootView.findViewById(R.id.tabhost3);
tabHost3.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent3);
tabHost3.addTab(tabHost3.newTabSpec("frag14").setIndicator(null, getResources().getDrawable(R.drawable.main1selector)), Fragment14.class, null);
tabHost3.addTab(tabHost3.newTabSpec("frag15").setIndicator(null, getResources().getDrawable(R.drawable.main2selector)), Fragment15.class, null);
tabHost3.addTab(tabHost3.newTabSpec("frag16").setIndicator(null, getResources().getDrawable(R.drawable.main3selector)), Fragment16.class, null);
tabHost3.addTab(tabHost3.newTabSpec("frag17").setIndicator(null, getResources().getDrawable(R.drawable.main4selector)), Fragment17.class, null);
tabHost1.getTabWidget().setDividerDrawable(null);
tabHost2.getTabWidget().setDividerDrawable(null);
tabHost3.getTabWidget().setDividerDrawable(null);
for( int i = 0; i < tabHost1.getTabWidget().getChildCount();i++) {
tabHost1.getTabWidget().getChildAt(i).setBackgroundColor(000000);
tabHost2.getTabWidget().getChildAt(i).setBackgroundColor(000000);
tabHost3.getTabWidget().getChildAt(i).setBackgroundColor(000000);
tabHost1.getTabWidget().getChildTabViewAt(i).setPadding(0,0,0,0);
tabHost2.getTabWidget().getChildTabViewAt(i).setPadding(0,0,0,0);
tabHost3.getTabWidget().getChildTabViewAt(i).setPadding(0,0,0,0);
}
return rootView;
}
private void Main_Gongcast(Main NewUser){
Picasso.with(getActivity().getApplicationContext())
.load(NewUser.getResponsedata().getResultObject().getMainBoardRecentArr().get(0).getContentFirstImgPath())
.into(iv_main_gongcast0);
Picasso.with(getActivity().getApplicationContext())
.load(NewUser.getResponsedata().getResultObject().getMainBoardRecentArr().get(1).getContentFirstImgPath())
.into(iv_main_gongcast1);
Picasso.with(getActivity().getApplicationContext())
.load(NewUser.getResponsedata().getResultObject().getMainBoardRecentArr().get(2).getContentFirstImgPath())
.into(iv_main_gongcast2);
Picasso.with(getActivity().getApplicationContext())
.load(NewUser.getResponsedata().getResultObject().getMainBoardRecentArr().get(3).getContentFirstImgPath())
.into(iv_main_gongcast3);
...
}
So basically, for the last part, I thought doing sth like:
private void Main_Gongcast(Main NewUser) {
for (int i = 0; i < 8; i++) {
Picasso.with(getActivity().getApplicationContext())
.load(NewUser.getResponsedata().getResultObject()
.getMainBoardRecentArr().get(i).getContentFirstImgPath()
.into(getResources()
.getIdentifier("iv_main_gongcast" + i, "id", getContext().getPackageName()));
}
}
would work but it doesn't.
回答1:
I did this way:
ImageView[] iv_main_gongcast = new ImageView[8];
//
for(int i=0; i< 8; i++) {
iv_main_gongcast[i] = ((ImageView) rootView.findViewById(getResources().getIdentifier("iv_main_gongcast" + i, "id", getActivity().getPackageName())));
}
//
private void Main_Gongcast(Main NewUser){
for (int i = 0; i < 8; i++) {
if(NewUser.getResponsedata().getResultObject().getMainBoardRecentArr().get(i).getContentFirstImgPath() != "") {
Picasso.with(getActivity().getApplicationContext())
.load("yoururl")
.into(iv_main_gongcast[i]);
}
}
}
来源:https://stackoverflow.com/questions/36215432/iterating-in-a-fragment