如何更新Android中ListView行中的查看分页器内容? [英] How to update View pager Content in ListView row in Android ?
问题描述
我在列表视图中将视图寻呼机实现为行。我在列表视图中完成了添加视图分页器,但问题是我在视图分页器中添加页面,无论返回SQLite计数函数。如果计数为3,则在View Pager 3中显示图像,如果count为5,则显示View Pager 5中的图像。但是得到StackOverFlowError.I的错误已经在最后2到3天尝试了最好的水平但是没有完美的工作。可以有人帮助我。如何做到这一点。
野兔是我的活动代码
public void getActivityObjectId_Count(){
try {
dbhelper = new MyDbHelper(this);
SQLiteDatabase db = dbhelper.getReadableDatabase();
光标cursor2 = db.rawQuery(从ActivityObjectList中选择count(activityObjId) +activityId+=?,new String [] {strDescription});
if(cursor2!= null){
cursor2.moveToFirst();
String strCount_ActivityObjectId = cursor2.getString(0);
intCount = Integer.parseInt(strCount_ActivityObjectId) ;
Log.e(intCount,在getActivityObjectId =+ intCount中);
}
cursor2.close();
db.close();
} catch(例外e){
// TODO:处理异常
e.printStackTrace();
}
}
类MyListAdapter扩展ArrayAdapter< all_post> {
上下文上下文;
int layoutResourceId;
private int selectedIndex;
ArrayList< all_post> data = new ArrayList< all_post>();
public MyListAdapter(Context context,int layoutResourceId,ArrayList< all_post> data){
super(context,layoutResourceId,data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data ;
}
@Override
public int getCount()
{
notifyDataSetChanged();
返回data.size();
}
@Override
public long getItemId(int position){
返回位置;
}
@Override
public View getView(int position,View convertView, ViewGroup parent){
查看row = convertView;
持有人持有人= null;
if(row == null)
{
LayoutInflater inflater =((Activity)context).getLayoutInflater() ;
row = inflater.inflate(layoutResourceId,parent,false);
holder = new Holder();
holder.txt_Descid =( TextView)row.findViewById(R.id.textDescid);
holder.txtTitle =(TextView)row.findViewById(R.id.txt_Desc);
holder.txtInitialLetter =(TextView)row.findViewById(R.id.txt_InitialLetter);
holder.txtRemark =(TextView)row.findViewById(R.id.textRemark);
holder.imgBtn_Rework =(ImageView)row.findViewById(R.id.imgButtonRework);
holder.imgBtn_FollowUp =(ImageView)row.findViewById(R.id.imgButtonFoloowUp) ;
holder.imgBtn_RateEquipMent =(ImageView)ro w.findViewById(R.id.imgButtonRateEquipment);
holder.imgBtn_Camera =(ImageView)row.findViewById(R.id.imgButtonCamera);
holder.imgBtn_Audio =( ImageView)row.findViewById(R.id.imgButtonAudio);
holder.imgBtn_FollowInspector =(ImageView)row.findViewById(R.id.imgButtonFollowInspector);
holder.viewPager =(ViewPager)row.findViewById(R.id.Image_ViewPagers);
holder.viewPager.setPageMargin(-50);
holder.viewPager.setHorizontalFadingEdgeEnabled(true);
holder.viewPager.setFadingEdgeLength(20);
holder.viewPager.setClipToPadding(false);
holder.viewPager.setPadding(-5,0,0,0);
MyPagerAdapter adapter = new MyPagerAdapter(getContext());
holder.viewPager.setAdapter(适应ter);
holder.viewPager.setCurrentItem(0);
adapter.notifyDataSetChanged();
//holder.viewPager.getAdapter()。notifyDataSetChanged();
row.setTag(holder);
} else {
holder =(持有人)row.getTag();
}
All_Post all_Post = data.get(position);
holder.txt_Descid.setText(Integer.toString(all_Post.getID()) );
String strTextDescId = holder.txt_Descid.getText()。toString()。trim();
Log.e(strTextDescId,=+ strTextDescId );
getActivityId(strTextDescId);
getActivityObjectId_Count();
holder.txtTitle.setText(all_Post .getName());
String strTxtTitle = holder.txtTi tle.getText()。toString()。trim();
Log.e(strTxtTitle,=+ strTxtTitle);
holder.txtInitialLetter.setText(all_Post.getInitName());
holder.txtRemark.setText(all_Post.getStrDesc());
holder.imgBtn_Rework.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Log.e(按钮点击,事件是火);
}
} );
返回行;
}
类持有人{
TextView txt_Descid;
TextView txtTitle;
TextView txtInitialLetter;
TextView txtRemark ;
ViewPager viewPager;
Im ageView imgBtn_Rework;
ImageView imgBtn_FollowUp;
ImageView imgBtn_RateEquipMent;
ImageView imgBtn_Camera;
ImageView imgBtn_Audio;
ImageView imgBtn_FollowInspector;
}
}
class MyPagerAdapter扩展PagerAdapter {
上下文mContent;
LayoutInflater mLayoutInflater;
private List< string> testImages = new ArrayList< string>();
private int [] GalImages = new int [] {
R.drawable.img_placeholder,
R.drawable.img_placeholder,
R.drawable.img_placeholder,
R.drawable.img_placeholder ,
R.drawable.img_placeholder,
R.drawable.img_placeholder
};
public MyPagerAdapter(Context context){
super();
mContent = context;
mLayoutInflater =(LayoutInflater)mContent.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public float getPageWidth(int position){
返回0.9f;
}
@Override
public Object instantiateItem(ViewGroup容器,int position){
// TODO自动生成的catch块
ImageView imageView = new ImageView(mContent );
imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT));
imageView.setScaleType(ImageView.ScaleType.FIT_XY ); $
imageView.setImageResource(GalImages [position]);
((ViewPager)容器).addView(imageView,0);
返回imageView;
}
public int getItemPosition(Object object){
返回POSITION_NONE;
}
@Override
public void destroyItem(ViewGroup容器,int位置,对象对象){
((ViewPager)容器).removeView((View)对象);
}
@Override
public int getCount(){
//返回PAGE_NUM;
Log.e(intCount8888:,=+ intCount);
notifyDataSetChanged();
返回intCount;
}
@Override
public boolean isViewFromObject(View view,Object obj){
//返回view.equals(obj);
返回view ==((ImageView)obj);
}
}
这是我的LogCat信息
08-07 02:20:38.436 3096-3096 /? E / AndroidRuntime:FATAL EXCEPTION:main
java.lang.StackOverflowError
在android.widget.AdapterView $ AdapterDataSetObserver.onChanged(AdapterView.java:801)
在android.widget.AbsListView $ AdapterDataSetObserver.onChanged(AbsListView.java:5998)
在android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
在android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
在android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
在com .example.tazeen.classnkk.AllPosts_Page $ MyListAdapter.getCount(AllPosts_Page.java:399)
在android.widget.AdapterView $ AdapterDataSetObserver.onChanged(AdapterView.java:801)
在android.widget.AbsListView $ AdapterDataSetObserver.onChanged(AbsListView.java:5998)
在android.database.DataSetObservable.notifyCha nged(DataSetObservable.java:37)
在android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
在android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter。 java:286)
com.example.tazeen.classnkk.AllPosts_Page $ MyListAdapter.getCount(AllPosts_Page.java:399)
在android.widget.AdapterView $ AdapterDataSetObserver。 onChanged(AdapterView.java:801)
在android.widget.AbsListView $ AdapterDataSetObserver.onChanged(AbsListView.java:5998)
在android.database.DataSetObservable.notifyChanged( DataSetObservable.java:37)
在android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
在android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java: 286)
在com.example.tazeen.classnkk.AllPosts_Page $ MyListAdapter.getCount(AllPosts_Page.java:399)
在android .widget.AdapterView $ AdapterDataSetObserver.onChanged(AdapterView.java:801)
在android.widget.AbsListView $ AdapterDataSetObserver.onChanged(AbsListView.java:5998)
在android .database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
在android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
在android.widget.ArrayAdapter .notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page $ MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget .AdapterView $ AdapterDataSetObserver.onChanged(AdapterView.java:801)
在android.widget.AbsListView $ AdapterDataSetObserver.onChanged(AbsListView.java:5998)
在android.database .DataSetObservable.notifyChanged(DataSetObservable.java:37)
在android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.j ava:50)
在android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page $ MyListAdapter.getCount( AllPosts_Page.java:399)
在android.widget.AdapterView $ AdapterDataSetObserver.onChanged(AdapterView.java:801)
在android.widget.AbsListView $ AdapterDataSetObserver.onChanged( absListView.java:5998)
在android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
在android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java: 50)
在android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page $ MyListAdapter.getCount(AllPosts_Page。 java:399)
在android.widget.AdapterView $ AdapterDataSetObserver.onChanged(AdapterView.java:801)
在android.widget.Abs ListView $ AdapterDataSetObserver.onChanged(AbsListView.java:5998)
在android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
在android.widget.BaseAdapter。 notifyDataSetChanged(BaseAdapter.java:50)
在android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page $ MyListAdapter.getCount(AllPosts_Page.java:399)
在android.widget.AdapterView $ AdapterDataSetObserver.onChanged(AdapterView.java:801)
在android.widget.AbsListView $ AdapterDataSetObserver.onChanged(AbsListView.java:5998)
在android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
在android.widget.BaseAdapter.notifyDataSetChanged( BaseAdapter.java:50)
在android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
在com.example.tazeen.classnkk.AllPosts_Page $ MyListAdapter.getCount(AllPosts_Page.java:399)
在android.widget.AdapterView $ AdapterDataSetObs
I'm implementing view pager as row in list-view. I have done the adding view pager in List View, But the problem is I'm adding the pages in view pager whatever return SQLite count Function.If count is 3 so show the images in View Pager 3 and If count is 5 so show the images in View Pager 5 . But getting error of StackOverFlowError.I have tried on best level last 2 to 3 days but not work perfectly.Can someone help me.How to do this.
hare is my Activity code
public void getActivityObjectId_Count() {
try {
dbhelper = new MyDbHelper(this);
SQLiteDatabase db = dbhelper.getReadableDatabase();
Cursor cursor2 = db.rawQuery("select count(activityObjId) from ActivityObjectList where " + "activityId" + " = ?", new String[]{strDescription});
if (cursor2 != null) {
cursor2.moveToFirst();
String strCount_ActivityObjectId = cursor2.getString(0);
intCount = Integer.parseInt(strCount_ActivityObjectId);
Log.e("intCount", "in getActivityObjectId = " + intCount);
}
cursor2.close();
db.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
class MyListAdapter extends ArrayAdapter<all_post> {
Context context;
int layoutResourceId;
private int selectedIndex;
ArrayList<all_post> data = new ArrayList<all_post>();
public MyListAdapter(Context context, int layoutResourceId, ArrayList<all_post> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public int getCount()
{
notifyDataSetChanged();
return data.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
Holder holder = null;
if (row == null)
{
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new Holder();
holder.txt_Descid = (TextView) row.findViewById(R.id.textDescid);
holder.txtTitle = (TextView) row.findViewById(R.id.txt_Desc);
holder.txtInitialLetter = (TextView) row.findViewById(R.id.txt_InitialLetter);
holder.txtRemark = (TextView) row.findViewById(R.id.textRemark);
holder.imgBtn_Rework = (ImageView) row.findViewById(R.id.imgButtonRework);
holder.imgBtn_FollowUp = (ImageView) row.findViewById(R.id.imgButtonFoloowUp);
holder.imgBtn_RateEquipMent = (ImageView) row.findViewById(R.id.imgButtonRateEquipment);
holder.imgBtn_Camera = (ImageView) row.findViewById(R.id.imgButtonCamera);
holder.imgBtn_Audio = (ImageView) row.findViewById(R.id.imgButtonAudio);
holder.imgBtn_FollowInspector = (ImageView) row.findViewById(R.id.imgButtonFollowInspector);
holder.viewPager = (ViewPager) row.findViewById(R.id.Image_ViewPagers);
holder.viewPager.setPageMargin(-50);
holder.viewPager.setHorizontalFadingEdgeEnabled(true);
holder.viewPager.setFadingEdgeLength(20);
holder.viewPager.setClipToPadding(false);
holder.viewPager.setPadding(-5, 0, 0, 0);
MyPagerAdapter adapter = new MyPagerAdapter(getContext());
holder.viewPager.setAdapter(adapter);
holder.viewPager.setCurrentItem(0);
adapter.notifyDataSetChanged();
//holder.viewPager.getAdapter().notifyDataSetChanged();
row.setTag(holder);
} else {
holder = (Holder) row.getTag();
}
All_Post all_Post = data.get(position);
holder.txt_Descid.setText(Integer.toString(all_Post.getID()));
String strTextDescId = holder.txt_Descid.getText().toString().trim();
Log.e("strTextDescId ", " = " + strTextDescId);
getActivityId(strTextDescId);
getActivityObjectId_Count();
holder.txtTitle.setText(all_Post.getName());
String strTxtTitle = holder.txtTitle.getText().toString().trim();
Log.e("strTxtTitle ", " = " + strTxtTitle);
holder.txtInitialLetter.setText(all_Post.getInitName());
holder.txtRemark.setText(all_Post.getStrDesc());
holder.imgBtn_Rework.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("Button click ", "event is fire");
}
});
return row;
}
class Holder {
TextView txt_Descid;
TextView txtTitle;
TextView txtInitialLetter;
TextView txtRemark;
ViewPager viewPager;
ImageView imgBtn_Rework;
ImageView imgBtn_FollowUp;
ImageView imgBtn_RateEquipMent;
ImageView imgBtn_Camera;
ImageView imgBtn_Audio;
ImageView imgBtn_FollowInspector;
}
}
class MyPagerAdapter extends PagerAdapter {
Context mContent;
LayoutInflater mLayoutInflater;
private List<string> testImages = new ArrayList<string>();
private int[] GalImages = new int[]{
R.drawable.img_placeholder,
R.drawable.img_placeholder,
R.drawable.img_placeholder,
R.drawable.img_placeholder,
R.drawable.img_placeholder,
R.drawable.img_placeholder
};
public MyPagerAdapter(Context context) {
super();
mContent = context;
mLayoutInflater = (LayoutInflater) mContent.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public float getPageWidth(int position) {
return 0.9f;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated catch block
ImageView imageView = new ImageView(mContent);
imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setImageResource(GalImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
@Override
public int getCount() {
// return PAGE_NUM;
Log.e("intCount8888: "," = " +intCount );
notifyDataSetChanged();
return intCount;
}
@Override
public boolean isViewFromObject(View view, Object obj) {
//return view.equals(obj);
return view == ((ImageView) obj);
}
}
Here is my LogCat information
08-07 02:20:38.436 3096-3096/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.StackOverflowError
at android.widget.AdapterView$AdapterDataSetObserver.onChanged(AdapterView.java:801)
at android.widget.AbsListView$AdapterDataSetObserver.onChanged(AbsListView.java:5998)
at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
at android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget.AdapterView$AdapterDataSetObserver.onChanged(AdapterView.java:801)
at android.widget.AbsListView$AdapterDataSetObserver.onChanged(AbsListView.java:5998)
at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
at android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget.AdapterView$AdapterDataSetObserver.onChanged(AdapterView.java:801)
at android.widget.AbsListView$AdapterDataSetObserver.onChanged(AbsListView.java:5998)
at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
at android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget.AdapterView$AdapterDataSetObserver.onChanged(AdapterView.java:801)
at android.widget.AbsListView$AdapterDataSetObserver.onChanged(AbsListView.java:5998)
at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
at android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget.AdapterView$AdapterDataSetObserver.onChanged(AdapterView.java:801)
at android.widget.AbsListView$AdapterDataSetObserver.onChanged(AbsListView.java:5998)
at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
at android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget.AdapterView$AdapterDataSetObserver.onChanged(AdapterView.java:801)
at android.widget.AbsListView$AdapterDataSetObserver.onChanged(AbsListView.java:5998)
at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
at android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget.AdapterView$AdapterDataSetObserver.onChanged(AdapterView.java:801)
at android.widget.AbsListView$AdapterDataSetObserver.onChanged(AbsListView.java:5998)
at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
at android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget.AdapterView$AdapterDataSetObserver.onChanged(AdapterView.java:801)
at android.widget.AbsListView$AdapterDataSetObserver.onChanged(AbsListView.java:5998)
at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
at android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget.AdapterView$AdapterDataSetObs
推荐答案
AdapterDataSetObserver.onChanged(AdapterView.java:801)
在android.widget.AbsListView
AdapterDataSetObserver.onChanged(AdapterView.java:801)
at android.widget.AbsListView
AdapterDataSetObserver.onChanged(AbsListView.java:5998)
在android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
在android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
在android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page
AdapterDataSetObserver.onChanged(AbsListView.java:5998)
at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
at android.widget.ArrayAdapter.notifyDataSetChanged(ArrayAdapter.java:286)
at com.example.tazeen.classnkk.AllPosts_Page
MyListAdapter.getCount (AllPosts_Page.java:399)
在android.widget.AdapterView
MyListAdapter.getCount(AllPosts_Page.java:399)
at android.widget.AdapterView
这篇关于如何更新Android中ListView行中的查看分页器内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!