[英]Different items on the listview of the viewpager - Android
我正在研究quiz application
。 我在這里使用Viewpager indicator
。在此我實現了listview with radio button
。
我的問題是,如何在viewpager
每一頁上獲取listviews的diffent values
。
我嘗試過Google,但是找不到解決方案。 請幫我。 謝謝
參見下面的圖片:
檢查我的代碼:
class PagerAdapter extends FragmentPagerAdapter implements SwipeyTabsAdapter{
public final String[] list = new String[]
{"Operating System", "Product Of Google", "Both Above", "None of above"}
;
private final Context mContext;
public PagerAdapter(Context context, FragmentManager fm) {
super(fm);
this.mContext = context;
}
@Override
public Fragment getItem(int pos) {
return ItemFragment.newInstance(QUES[pos]);
//return ItemFragment.newInstance(QUES[pos % TITLES.length]);
}
@Override
public int getCount() {
return TITLES.length;
}
public TextView getTab(final int position, SwipeyTabs root) {
TextView view = (TextView) LayoutInflater.from(mContext).inflate(
R.layout.swipey_tab_indicator, root, false);
view.setText(TITLES[position]);
view.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mViewPager.setCurrentItem(position);
}
});
return view;
}
}
public static class ItemFragment extends Fragment{
static ItemFragment newInstance(String title) {
ItemFragment f = new ItemFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putString("title",title);
f.setArguments(args);
System.out.println("value of the title : ================>"+title);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.view_question, container, false);
View tv = v.findViewById(R.id.text);
final View listvw = v.findViewById(R.id.listview);
final String title = getArguments().getString("title");
((TextView)tv).setText(title);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_single_choice, list);
((ListView) listvw).setAdapter(adapter);
((ListView) listvw).setChoiceMode(ListView.CHOICE_MODE_SINGLE);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
public void onListItemClick(ListView l, View v, int position, long id) {
Log.i("FragmentList", "Item clicked: " + id);
}
}
好吧,我建議您為列表所在的每個“視圖”設置一個ID,然后當您要檢索該值時,只需將所有ID從0循環到適配器的大小減去1,就可以了。在每次迭代中為您提供完整視圖,因此之后您需要迭代視圖的子級以找到復選框。 希望能幫助到你。
試試這個:
首先按照下面的顯示初始化listvalue
/*public final String[] list = new String[]
{"Operating System", "Product Of Google", "Both Above", "None of above"};*/
public static final String[] listArray = new String[]
{
"Operating System,Product Of Google,Both Above,None of above",
"os,Google,Both,None",
"Operating System,Product Of Google,Both Above,None of above",
"os,Google,Both,None",
"Operating System,Product Of Google,Both Above,None of above",
"os,Google,Both,None",
"Operating System,Product Of Google,Both Above,None of above",
"os,Google,Both,None"};
將參數添加到getItem listArray[pos]
如下所示:
@Override
public Fragment getItem(int pos) {
return ItemFragment.newInstance(QUES[pos],listArray[pos]);
}
並更改為ItemFragment類,例如:
static ItemFragment newInstance(String title,String arrayList) {
ItemFragment f = new ItemFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putString("title",title);
args.putString("listvalues",arrayList);
f.setArguments(args);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.view_question, container, false);
View tv = v.findViewById(R.id.text);
final String title = getArguments().getString("title");
final String Listvalues = getArguments().getString("listvalues");
String[] arr=Listvalues.split(",");
System.out.println("Array :"+arr.length);
for(int i=0;i<arr.length;i++)
{
// System.out.println("array"+i+":========================>"+arr[i]);
}
((TextView)tv).setText(title);
final View listvw = v.findViewById(R.id.listview);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_single_choice, arr);
((ListView) listvw).setAdapter(adapter);
((ListView) listvw).setChoiceMode(ListView.CHOICE_MODE_SINGLE);
return v;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.