하나의 ListView를 사용하고 두 명의 Arraylist가있는 하나의 어댑터를 설정하고 있습니다. List 및 List1은 SqliteDatabase에서 서로 다른 GetAllItems 인 두 개의 ArrayList입니다.안드로이드의 ListView에서 ArrayList가있는 ArrayIndexOutofBoundException?
내 질문은 10 개 항목을 가정하고 목록 7은 7 개 항목을 스크롤 한 다음 7 개 항목까지 성공적으로 표시 할 때마다 8 개 항목까지 표시 한 다음 오류 ArrayOutOfBoundExcecption을 지정합니다. 왜냐하면 두 ArrayList의 크기가 다르기 때문입니다. List는 항상 더 크고 List1입니다.
해결 방법이 오류 메시지가 표시됩니다.
Plesae 가이드 나를.
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;
}
List1
을 사용하고 있습니까? 단일 목록에 바인딩하고 모델 클래스 또는 해시 맵 목록을 사용하십시오 –여기에 어댑터를 게시하십시오. –
@Ravi beacuse 두 개의 ArrayList를 사용 했으므로 두 개의 테이블을 사용했습니다. – Reena