当前位置:编程学习 > wap >>

listview分页加载网络数据,点击Item进去出错

listview第一次加载,显示正常,点击item进去也没有异常。下图是 第一次加载数据列表和点击 游记2 获得的数据

点击查看更多,第二次加载。显示4个item。但是单击 第一次加载数据。发现 position 是第二次加载item。下图是 第二次加载更多 和点击 游记2的数据。但是这些数据是 准备就绪,上路 的。点击 准备就绪,上路 这个item的时候,提示数组越界。


这是我插入数据和点击item的代码

adapter.java
public void addItem(Map<String, Object> load){
this.list.add(load);
 
Log.v("albumAdapter",String.valueOf(list.size()));
  
}
@Override
public int getCount() {
if(list.size()!=0)
{
return list.size();
}else{
return 0;
}
}

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

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

 
@Override
public View getView(int position, View convertView, ViewGroup parent) {
albumHolder holder=new albumHolder();;
 
if(convertView==null){
convertView=inflater.inflate(R.layout.album_item, null);
 
holder.covert=(ImageView)convertView.findViewById(R.id.album_item_covert);
holder.name=(TextView)convertView.findViewById(R.id.album_item_name);
holder.time=(TextView)convertView.findViewById(R.id.album_item_time);
holder.counts=(TextView)convertView.findViewById(R.id.album_item_count);

holder.covert.setScaleType(ScaleType.CENTER_CROP);

convertView.setTag(holder);//绑定ViewHolder对象                   
}else{
holder=(albumHolder)convertView.getTag();//取出ViewHolder对象
}
 
 
holder.name.setText(list.get(position).get("name").toString());
holder.counts.setText(list.get(position).get("counts").toString());
holder.time.setText(list.get(position).get("time").toString());



activity类
public void LoadData(){  //点击加载更多

//int count=adapter.getCount();

 
for(int i=0;i< album_list.size();i++){
Map<String, Object> map=new HashMap<String, Object>();
Album album_entity = album_list.get(i);
map.put("pid", album_entity.getPid());
map.put("name", album_entity.getName());
map.put("counts",album_entity.getCounts());
map.put("time", album_entity.getDate());
map.put("covert",album_entity.getCovert());
adapter.addItem(map);
}

}

 下面是将数据显示在列表
 if (album_list.size()==0) {
 album_listview.onLoadMoreComplete(false);
 Error_Dialog(context, "没有数据更新");
}else{
 
//album_listview.setAdapter(adapter);
//adapter.notifyDataSetInvalidated();
try{
LoadData();

}catch (Exception e) {
e.printStackTrace();
}
adapter.notifyDataSetChanged();
//album_listview.setAdapter(adapter);
album_listview.setSelection(visibleLast - visibleCount + 1);
album_listview.onLoadMoreComplete(false);
}
 }


这是 点击item的代码
album_listview.setOnItemClickListener(new OnItemClickListener() {

 
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// Album albums=album_list.get(position);
try {
pid=album_list.get(position-1).getPid();
 Log.v("albumActivity", pid);
 Intent intent=new Intent();
 Bundle bundle=new Bundle();
 intent.setClass(albumActivity.this, albumItemActivity.class);
 bundle.putString("pid", pid);
 intent.putExtras(bundle);
 startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
 
麻烦看一下。现在卡在这里,我很急,在线等 listview 分页 --------------------编程问答-------------------- 大家帮帮忙 --------------------编程问答-------------------- Activity类的LoadData函数里的map变量,在for循环结束后,它的内存空间会被释放,这是你错误的原因。ListView上的数据生命周期,你要让它跟Activity的生命周期一样长。 --------------------编程问答-------------------- LZ成功没有? --------------------编程问答-------------------- 数组和列表没对应了吧 都更新一下。 --------------------编程问答-------------------- 我也遇到LZ这样的问题,请问LZ咋解决的,急等啊!!!!!!!!!!!! --------------------编程问答-------------------- 这个是因为加了headview 和footview 引起的把
试试
	mXListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if (arg2 == -1) {
return;
}
try {
ReacnnListView listView = (ReacnnListView) arg0;
SupplierBean muUserCouponLog = (SupplierBean) listView
.getItemAtPosition(arg2);
if (listView != null && muUserCouponLog != null) {
Intent mIntent = new Intent(getActivity(),
FrmSupplierDetailsRelatedMsgActivity.class);
mIntent.putExtra(
SharedPreferencesFieldConfig.Skip_SupplierList_SupllierName,
muUserCouponLog.getUsername());

mIntent.putExtra(
SharedPreferencesFieldConfig.Skip_SupplierList_CompanyName,
muUserCouponLog.getCompany());
startActivity(mIntent);
}
} catch (Exception e) {
LogUtil.e(TAG, "", e, false);
}
}
});
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,