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); // }
在这里,我将viewpager适配器用于listview。Clear是适配器外部的onclick方法。如果单击该按钮,第一个to位置的单选按钮被禁用。之后,我得到了空指针异常。有什么办法可以纠正这个问题吗?我需要解决这个问题。有人帮我吗?有几种方法可以实现这一点 第一种选择比较简单,但效率稍低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)
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;
}