Android 如何从主视图按钮onclick方法更新viewpager适配器? ArrayList查询列表,应答键; viewPager=(viewPager)findViewById(R.id.pager); 适配器=新的ViewPagerAdapter(PracticeModelActivity.this,quesion_list,A1,A2,A3,A4,A5); //将适配器绑定到ViewPager viewPager.setAdapter(适配器); viewPager.setOnPageChangeListener(新的viewPager.OnPageChangeListener(){ @凌驾 页面上的公共无效已滚动(整数i、浮点v、整数i2){ } @凌驾 已选择页面上的公共无效(int i){ //Log.i(“第页”,String.valueOf(i)); viewPager.getAdapter().getCount(); int current=viewPager.getCurrentItem(); int current_count=当前+1; //Log.i(“count”,String.valueOf(viewPager.getAdapter().getCount()); noquestions.setText(String.valueOf(current_count)+of“+长度); //Log.i(“options”,options.toString()); //如果(i!=0) // { //回答1.设置检查(假); //回答2.设置检查(假); //回答3.设置检查(假); //回答4.设置检查(假); // // } } @凌驾 页面上的公共无效状态已更改(int i){ //viewPager.getParent().RequestDisallowWinterCeptTouchEvent(true); } }); 公共类ViewPagerAdapter扩展了PagerAdapter{ //声明变量 语境; 字符串[]秩; 字符串[]国家; 字符串[]总体; int[]标志; 充气机; 私有arraylisthashmap; public ViewPagerAdapter(上下文、ArrayList哈希映射){ this.context=上下文; this.hashmap=hashMaps; } @凌驾 public int getCount(){ 返回hashmap.size(); } @凌驾 公共布尔值isViewFromObject(视图,对象){ 返回视图==((RelativeLayout)对象); } @凌驾 公共void finishUpdate(视图容器){ } @凌驾 公共无效恢复状态(可包裹状态,类装入器){ } @凌驾 公共包裹存储状态(){ 返回null; } @凌驾 公共无效启动日期(查看容器){ } @凌驾 公共对象实例化项(最终视图组容器,最终int位置){ //声明变量 TextView-txtrank; 充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务); itemView=充气机。充气(R.layout.question_项目,容器,错误); TextView correctanswer=(TextView)itemView.findViewById(R.id.correctanswer); ((ViewPager)容器).addView(itemView); r1=(单选按钮)itemView.findViewById(R.id.answerA1); 返回项目视图; } } /*按钮点击法*/ 公共空间清理(视图五) { viewPager.findViewWithTag(viewPager.getCurrentItem()); int current=viewPager.getCurrentItem(); Log.i(“单击”,String.valueOf(当前)); //View=viewPager.getChildAt(当前); //((视图组))mViewPager.getChildAt(MyActivity.mViewPager.getCurrentItem()); View-View=viewPager.getChildAt(viewPager.getCurrentItem()); 选项集(当前为“0”); //适配器=新的ViewPagerAdapter(PracticeModeActivity.this,quesion\u list); //将适配器绑定到ViewPager //viewPager.setAdapter(适配器); viewPager.getAdapter().notifyDataSetChanged(); RadioButton rl11=(RadioButton)v.findViewById(R.id.answerA1); // rl11.setChecked(false); // }

Android 如何从主视图按钮onclick方法更新viewpager适配器? ArrayList查询列表,应答键; viewPager=(viewPager)findViewById(R.id.pager); 适配器=新的ViewPagerAdapter(PracticeModelActivity.this,quesion_list,A1,A2,A3,A4,A5); //将适配器绑定到ViewPager viewPager.setAdapter(适配器); viewPager.setOnPageChangeListener(新的viewPager.OnPageChangeListener(){ @凌驾 页面上的公共无效已滚动(整数i、浮点v、整数i2){ } @凌驾 已选择页面上的公共无效(int i){ //Log.i(“第页”,String.valueOf(i)); viewPager.getAdapter().getCount(); int current=viewPager.getCurrentItem(); int current_count=当前+1; //Log.i(“count”,String.valueOf(viewPager.getAdapter().getCount()); noquestions.setText(String.valueOf(current_count)+of“+长度); //Log.i(“options”,options.toString()); //如果(i!=0) // { //回答1.设置检查(假); //回答2.设置检查(假); //回答3.设置检查(假); //回答4.设置检查(假); // // } } @凌驾 页面上的公共无效状态已更改(int i){ //viewPager.getParent().RequestDisallowWinterCeptTouchEvent(true); } }); 公共类ViewPagerAdapter扩展了PagerAdapter{ //声明变量 语境; 字符串[]秩; 字符串[]国家; 字符串[]总体; int[]标志; 充气机; 私有arraylisthashmap; public ViewPagerAdapter(上下文、ArrayList哈希映射){ this.context=上下文; this.hashmap=hashMaps; } @凌驾 public int getCount(){ 返回hashmap.size(); } @凌驾 公共布尔值isViewFromObject(视图,对象){ 返回视图==((RelativeLayout)对象); } @凌驾 公共void finishUpdate(视图容器){ } @凌驾 公共无效恢复状态(可包裹状态,类装入器){ } @凌驾 公共包裹存储状态(){ 返回null; } @凌驾 公共无效启动日期(查看容器){ } @凌驾 公共对象实例化项(最终视图组容器,最终int位置){ //声明变量 TextView-txtrank; 充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务); itemView=充气机。充气(R.layout.question_项目,容器,错误); TextView correctanswer=(TextView)itemView.findViewById(R.id.correctanswer); ((ViewPager)容器).addView(itemView); r1=(单选按钮)itemView.findViewById(R.id.answerA1); 返回项目视图; } } /*按钮点击法*/ 公共空间清理(视图五) { viewPager.findViewWithTag(viewPager.getCurrentItem()); int current=viewPager.getCurrentItem(); Log.i(“单击”,String.valueOf(当前)); //View=viewPager.getChildAt(当前); //((视图组))mViewPager.getChildAt(MyActivity.mViewPager.getCurrentItem()); View-View=viewPager.getChildAt(viewPager.getCurrentItem()); 选项集(当前为“0”); //适配器=新的ViewPagerAdapter(PracticeModeActivity.this,quesion\u list); //将适配器绑定到ViewPager //viewPager.setAdapter(适配器); viewPager.getAdapter().notifyDataSetChanged(); RadioButton rl11=(RadioButton)v.findViewById(R.id.answerA1); // rl11.setChecked(false); // },android,radio-button,android-viewpager,android-adapter,Android,Radio Button,Android Viewpager,Android Adapter,在这里,我将viewpager适配器用于listview。Clear是适配器外部的onclick方法。如果单击该按钮,第一个to位置的单选按钮被禁用。之后,我得到了空指针异常。有什么办法可以纠正这个问题吗?我需要解决这个问题。有人帮我吗?有几种方法可以实现这一点 第一种选择比较简单,但效率稍低 ArrayList <HashMap<String,String>> quesion_list,answerkey; viewPager = (ViewPager)

在这里,我将viewpager适配器用于listview。Clear是适配器外部的onclick方法。如果单击该按钮,第一个to位置的单选按钮被禁用。之后,我得到了空指针异常。有什么办法可以纠正这个问题吗?我需要解决这个问题。有人帮我吗?

有几种方法可以实现这一点

第一种选择比较简单,但效率稍低

  ArrayList <HashMap<String,String>> quesion_list,answerkey;

    viewPager = (ViewPager) findViewById(R.id.pager);
            adapter = new ViewPagerAdapter(PracticeModeActivity.this,quesion_list,A1,A2,A3,A4,A5);
                    // Binds the Adapter to the ViewPager
                viewPager.setAdapter(adapter);
                viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageScrolled(int i, float v, int i2) {

                    }

                    @Override
                    public void onPageSelected(int i) {

                    //  Log.i("page",String.valueOf(i));
                      viewPager.getAdapter().getCount();
                      int current = viewPager.getCurrentItem();
                      int current_count=current+1;
                     // Log.i("count",String.valueOf(viewPager.getAdapter().getCount()));
                      noquestions.setText(String.valueOf(current_count)+" of "+length);

                  //    Log.i("options",options.toString());
//                    if(i!=0)
//                    {
//                        answerA1.setChecked(false);
//                        answerA2.setChecked(false);
//                        answerA3.setChecked(false);
//                        answerA4.setChecked(false);
//
//                    }

                    }

                    @Override
                    public void onPageScrollStateChanged(int i) {
                 //     viewPager.getParent().requestDisallowInterceptTouchEvent(true);
                    }
                });

    public class ViewPagerAdapter extends PagerAdapter {
            // Declare Variables
            Context context;
            String[] rank;
            String[] country;
            String[] population;
            int[] flag;
            LayoutInflater inflater;
            private ArrayList<HashMap<String, String>> hashmap;

            public ViewPagerAdapter(Context context,ArrayList<HashMap<String, String>> hashMaps) {
                this.context = context;
                this.hashmap = hashMaps;            

            }

            @Override
            public int getCount() {
                return hashmap.size();
            }

            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view == ((RelativeLayout) object);
            }
            @Override
            public void finishUpdate(View container) {
            }

            @Override
            public void restoreState(Parcelable state, ClassLoader loader) {
            }

            @Override
            public Parcelable saveState() {
                return null;
            }

            @Override
            public void startUpdate(View container) {
            }
            @Override
            public Object instantiateItem(final ViewGroup container, final int position) {

                // Declare Variables
                TextView txtrank;

                inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                 itemView = inflater.inflate(R.layout.question_item, container,false);
                TextView  correctanswer=(TextView)itemView.findViewById(R.id.correctanswer);
    ((ViewPager) container).addView(itemView);

                 r1=(RadioButton)itemView.findViewById(R.id.answerA1);
                return itemView;
            }
    }
/* button onclick method */
public void Clear(View v)
{

            viewPager.findViewWithTag(viewPager.getCurrentItem());
            int current = viewPager.getCurrentItem();
            Log.i("click",String.valueOf(current));
    //        View view=viewPager.getChildAt(current);
    //        ((ViewGroup))mViewPager.getChildAt(MyActivity.mViewPager.getCurrentItem()));
            View view     = viewPager.getChildAt(viewPager.getCurrentItem());
            options.set(current, "0");
    //      adapter = new ViewPagerAdapter(PracticeModeActivity.this,quesion_list);
            // Binds the Adapter to the ViewPager
    //  viewPager.setAdapter(adapter);
        viewPager.getAdapter().notifyDataSetChanged();   
            RadioButton rl11=(RadioButton)v.findViewById(R.id.answerA1);
    //           
            rl11.setChecked(false);
    //      

        }

Override getItemPosition in your PagerAdapter like this:

public int getItemPosition(Object object) {
    return POSITION_NONE;
}