您的位置:首页 > 其它

关于自定义Adapter中更新界面的问题

2013-09-24 23:10 281 查看
前几天,在做一个adapter里费时操作时遇到了如下问题。如图



点击发送开始上传文件,同时将上传失败改为开始上传,发送各位正在上传,在自定义的adapter中,xml单独的,所以你在Activity中想拿到 发送的监听,不好实现啊。

索性就在Adapter中直接给发送按钮加监听,

public class Adapter extends BaseListAdapter<QueueInfo> {

public Adapter(Context context, List<QueueInfo> values) {

super(context, values);

// TODO Auto-generated constructor stub

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return super.getCount();

}

@Override

public Info getItem(int position) {

// TODO Auto-generated method stub

return super.getItem(position);

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return super.getItemId(position);

}

@Override

protected View getItemView(View convertView, int position) {

// TODO Auto-generated method stub

UtilsLog.e("juhe", "position");

ViewHolder holder = null;

if(convertView == null){

convertView = LayoutInflater.from(mContext).inflate(R.layout.queue_list_item, null);

holder = new ViewHolder();

holder.name = (TextView)convertView.findViewById(R.id.name);

holder.sss = (TextView)convertView.findViewById(R.id.sss);

holder.ail = (TextView)convertView.findViewById(R.id.fail);

convertView.setTag(holder);

}else{

holder =(ViewHolder)convertView.getTag();

}

holder.send.setText("发送");

holder.tv_upfail.setText("失败");

return convertView;

}

public class ViewHolder {

public TextView name, sss,fail;

public Button send;

}

private void fangfa(View convertView, ViewHolder holde,

final Info info, final int position) {

final ViewHolder hold = holde;

holde.send.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

new AsyncTask(hold.tv_upfail,hold._send,info).execute(pic);

new AsyncTask().execute(Object);

}

}

});

}

AsyncTask 内部类省略。。。。。。。。。。。。。。

然后在

@Override

protected void onPostExecute(UploadResult result) {

super.onPostExecute(result);

hfail.setText("上传失败");-

hsend.setText("发送");---

-- - ---- ------ -- --请注意,上边这两句看是可以,实际上你根本拿不到发送按钮 等组件,因为本就在内部类中,本想弄个全局的ViewHolder不就完了,可以一试又不行,因为每个Item都会被监听,你这一全局,就相当于只拿到了最后一个的发送按钮等组件,其他的不行啊,狂想一阵,还是把对应的Item里的组件直接就带过去吧,于是就在asycTask里通过构造方法传了过去,果然解决了问题,哈哈哈!

}

还有一点要告诉大家的是,如果你adapter里有了数据变动,又必须在AsycTask里操作,之后必须去更新adapter肯定想到notifyDataSetChanged();方法,不好意识,在这里,没用奥。所以想办法重新走一遍Andpter,此时必须记得吧蓝色部分加上,否者

发送按钮 就变不回了会一直是正在上传 ,等到你真正遇到的时候就会明白!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: