关于自定义Adapter中更新界面的问题
来源:互联网 发布:飞叶子在淘宝叫什么 编辑:程序博客网 时间:2024/06/07 05:31
前几天,在做一个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,此时必须记得吧蓝色部分加上,否者
发送按钮 就变不回了会一直是正在上传 ,等到你真正遇到的时候就会明白!
- 关于自定义Adapter中更新界面的问题
- 关于adapter.notifyDataSetChanged无法更新的问题
- 关于adapter的数据更新问题
- 关于ListView中使用自定义Adapter及时更新数据
- android关于UI界面更新的问题
- 关于Adapter的notifyDataSetChanged()方法数据不更新问题解析
- 自定义Adapter开发中没有回调getView()的问题
- ListView中Adapter的自定义
- Android-关于一个界面同级中需要两个listView时,一个ListView被嵌套在ScrollView中,ListView的适配器adapter中的getView执行次数重复问题
- Android Adapter,UI界面更新
- Adapter.notifyDataSetChanged()无法更新的问题
- ListView中使用自定义Adapter及时更新数据
- 关于如何改变thinkphp中自定义的成功界面、错误界面、异常界面
- 解决adapter更新问题
- Android中自定义Adapter的基本原理
- 自定义Adapter中对ListView的优化
- Android中自定义Adapter的基本原理
- 自定义Adapter中实现startActivityForResult的分析
- 《算法竞赛-训练指南》第五章-5.1_UVa 11624
- ios设计模式读书笔记----Factory Method(工厂方法)
- Android项目导入出现问题解决方案
- C++的单例模式
- linux make
- 关于自定义Adapter中更新界面的问题
- Windows下安装wundle
- hadoop学习笔记(一)
- 在WisOne平台上学习TypeScript
- 提高代码质量的Eclipse插件之JDepend
- 黑马学习日记-3面向对象基本概念及常量命名空间
- Java EE面向对象实战之道
- remove函数1
- 每日集成之每日编译