android中ListView中的ArrayIndexOutofBoundException与ArrayList?

android中ListView中的ArrayIndexOutofBoundException与ArrayList?,android,android-listview,indexoutofboundsexception,Android,Android Listview,Indexoutofboundsexception,我使用一个ListView并将一个适配器设置为两个Arraylist。List和List1是两个ArrayList,它不同于SqliteDatabase的GetAllItem 我的问题是,假设列表有10个项目,而列表1有7个项目,那么当我滚动我的列表视图并成功地将项目显示到7时,但每当第8个项目出现时,就会给出BoundException的错误排列。因为两个ArrayList的大小不同。列表总是比列表1大 如何解决这个错误 请引导我 My code is, Adapter1 adap

我使用一个ListView并将一个适配器设置为两个Arraylist。List和List1是两个ArrayList,它不同于SqliteDatabase的GetAllItem

我的问题是,假设列表有10个项目,而列表1有7个项目,那么当我滚动我的列表视图并成功地将项目显示到7时,但每当第8个项目出现时,就会给出BoundException的错误排列。因为两个ArrayList的大小不同。列表总是比列表1大

如何解决这个错误

请引导我

My code is, 

    Adapter1 adapter = new Adapter1(this,
                            List, List1);
    listView1.setAdapter(Adapter1);

        dbAdapter.openForRead();
            list = dbAdapter.getAllMyData();
            dbAdapter.close();

            dbAdapter.openForRead();

            list1 = dbAdapter.getDisplayLike();
            dbAdapter.close();


/** Adapter Class */
    public class Adapter1 extends BaseAdapter {

        Context context = null;
        LayoutInflater layoutInflater = null;

        List<List> list = new ArrayList<List>();
        List<List1> list1 = new ArrayList<List1>();

        public Adapter1(Context context, List<List> list ,
                List<List1> list1 ) {

            this.context = context;
            this.list  = list ;
            this.list1 = list1;
            layoutInflater = LayoutInflater.from(context);
            viewHolder = new ViewHolder();
        }

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

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @SuppressLint("InflateParams")
        @Override
        public View getView(final int position, View convertView,
                ViewGroup parent) {
            View vi = convertView;
            if (vi == null) {
                vi = layoutInflater.inflate(R.layout.list_item,
                        parent, false);

                viewHolder = new ViewHolder();
                /** Initialize Widgets */
                /** Imageview */
                viewHolder.imgUserIcon = (ImageView) vi
                        .findViewById(R.id.imgUserIcon);
                viewHolder.imgImage = (ImageView) vi
                        .findViewById(R.id.imgImage);

                viewHolder.imgUnlike = (ImageView) vi
                        .findViewById(R.id.imgUnlike);
                viewHolder.imgUnlike.setTag(position);

                viewHolder.imgLike = (ImageView) vi
                        .findViewById(R.id.imgLike);
                viewHolder.imgLike.setTag(position);



                /** TextView */
                viewHolder.txtPostId = (TextView) vi
                        .findViewById(R.id.txtPostId);
                viewHolder.txtUserName = (TextView) vi
                        .findViewById(R.id.txtUserName);
                viewHolder.txtDateTime = (TextView) vi
                        .findViewById(R.id.txtDateTime);


                viewHolder.txtLikeUnlike = (TextView) vi
                        .findViewById(R.id.txtLikeUnlike);
                viewHolder.txtLikeUnlike.setTag(position);


                vi.setTag(viewHolder);

            } else {
                viewHolder = (ViewHolder) vi.getTag();
            }



            final List listBean= list .get(position);
            final List1 list1Bean= list1.get(position);


            viewHolder.txtPostId.setText(listBean.getiPostId()
                    + "");
            viewHolder.txtUserName.setText(listBean.getName());

            viewHolder.txtDateTime.setText(listBean.getStrCreated());

            viewHolder.txtLikeUnlike.setText(listBean.getiLike()
                    + "");



            int iDisplayLike = list1Bean.getiDisplayLike();
            if (iDisplayLike == 1) {
                viewHolder.imgUnlike.setVisibility(View.GONE);
                viewHolder.imgLike.setVisibility(View.VISIBLE);

            }
            if (iDisplayLike == 0) {
                viewHolder.imgLike.setVisibility(View.GONE);
                viewHolder.imgUnlike.setVisibility(View.VISIBLE);

            }

            });
            return vi;
        }

        class ViewHolder {
            ImageView imgIcon = null, imgImage = null,
                    imgUnlike = null;
            TextView txtPostId = null, txtUserName = null,
                    txtDateTime = null, 
                    txtLikeUnlike = null;
        }
我的代码是,
适配器1适配器=新适配器1(此,
列表,列表1);
listView1.setAdapter(适配器1);
dbAdapter.openForRead();
list=dbAdapter.getAllMyData();
dbAdapter.close();
dbAdapter.openForRead();
list1=dbAdapter.getDisplayLike();
dbAdapter.close();
/**适配器类*/
公共类适配器1扩展了BaseAdapter{
Context=null;
LayoutInflater LayoutInflater=null;
列表=新的ArrayList();
List list1=新的ArrayList();
公共适配器1(上下文、列表、,
列表1){
this.context=上下文;
this.list=列表;
this.list1=list1;
layoutInflater=layoutInflater.from(上下文);
viewHolder=新的viewHolder();
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@SuppressLint(“充气参数”)
@凌驾
公共视图getView(最终整型位置,视图转换视图,
视图组(父级){
视图vi=转换视图;
如果(vi==null){
vi=布局更平坦。充气(R.layout.list\u项目,
父母,假);
viewHolder=新的viewHolder();
/**初始化小部件*/
/**图像视图*/
viewHolder.imgUserIcon=(ImageView)vi
.findviewbyd(R.id.imgUserIcon);
viewHolder.imgImage=(图像视图)vi
.findviewbyd(R.id.imgImage);
viewHolder.imgUnlike=(ImageView)vi
.findviewbyd(R.id.imgUnlike);
viewHolder.imgUnlike.setTag(位置);
viewHolder.imgLike=(ImageView)vi
.findviewbyd(R.id.imgLike);
viewHolder.imgLike.setTag(位置);
/**文本视图*/
viewHolder.txtPostId=(TextView)vi
.findViewById(R.id.txtPostId);
viewHolder.txtUserName=(TextView)vi
.findViewById(R.id.txtUserName);
viewHolder.txtDateTime=(TextView)vi
.findviewbyd(R.id.txtDateTime);
viewHolder.txtLikeUnlike=(TextView)vi
.findviewbyd(R.id.txtLikeUnlike);
viewHolder.txtLikeUnlike.setTag(位置);
vi.setTag(视图持有者);
}否则{
viewHolder=(viewHolder)vi.getTag();
}
最终列表listBean=List.get(位置);
最终列表1 list1Bean=List1.get(位置);
viewHolder.txtPostId.setText(listBean.getiPostId())
+ "");
viewHolder.txtexername.setText(listBean.getName());
viewHolder.txtDateTime.setText(listBean.getStrCreated());
viewHolder.txtLikeUnlike.setText(listBean.getiLike())
+ "");
int-iDisplayLike=list1Bean.getiDisplayLike();
如果(iDisplayLike==1){
viewHolder.imgUnlike.setVisibility(View.GONE);
viewHolder.imgLike.setVisibility(View.VISIBLE);
}
如果(iDisplayLike==0){
viewHolder.imgLike.setVisibility(View.GONE);
viewHolder.imgUnlike.setVisibility(View.VISIBLE);
}
});
返回vi;
}
类视图持有者{
ImageView imgIcon=null,imgImage=null,
imgUnlike=null;
TextView txtPostId=null,txtUserName=null,
txtDateTime=null,
txtLikeUnlike=null;
}

如果要从两个表中提取数据,则首先将两个
ArrayList
都加上边框,然后在适配器中传递single
ArrayList
,以显示数据,而不是两个列表

Adapter1
类构造函数中,将两个数组列表对齐:

private ArrayList<DataType> finalList;
 public Adapter1(Context mContext,ArrayList list1,ArrayList list2){
  finalList = new ArrayList<DataType>(list1);
  finalList.addAll(list2);
}
private ArrayList finalList;
公共适配器1(上下文mContext、ArrayList列表1、ArrayList列表2){
finalList=新数组列表(列表1);
finalList.addAll(列表2);
}

现在使用
finalList
来查看
getView
getCount
适配器中使用
List
List1

的方法,为什么需要2个List?将它绑定到单个列表中,并使用model class或hashmap listpost在此处发布适配器…@Ravi因为我使用了两个表来获取数据,所以我在适配器类中使用了两个ArrayListcheck ur getSize()方法,您在那里给出了多大的大小。如果使用大小不同的两个列表,则会产生问题