ListView刷新单个item

原创 2015年11月18日 10:56:31

public class ConstructionAdapter extends BaseAdapter {


private List<Construction> list;
private ConstructionRecordActivity activity;


public ConstructionAdapter(ConstructionRecordActivity activity,
List<Construction> list) {
this.activity = activity;
this.list = list;
}


@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}


@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}


@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}


@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = activity.getLayoutInflater().inflate(
R.layout.construction_list_item3, null, false);
viewHolder.tv_pile_no = (TextView) convertView
.findViewById(R.id.tv_pile_no);
viewHolder.tv_start_time = (TextView) convertView
.findViewById(R.id.tv_start_time);
viewHolder.tv_pile_length = (TextView) convertView
.findViewById(R.id.tv_pile_length);
viewHolder.tv_deviation = (TextView) convertView
.findViewById(R.id.tv_deviation);
viewHolder.tv_end_time = (TextView) convertView
.findViewById(R.id.tv_end_time);
viewHolder.tv_pile_time = (TextView) convertView
.findViewById(R.id.tv_pile_time);
viewHolder.tv_statues = (TextView) convertView
.findViewById(R.id.tv_statues);
viewHolder.tv_input_marker = (TextView) convertView
.findViewById(R.id.tv_input_marker);
viewHolder.iv_pile_finish = (ImageView) convertView
.findViewById(R.id.iv_pile_finish);
viewHolder.layout = (LinearLayout) convertView
.findViewById(R.id.layout);


convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
final Construction data = list.get(position);
viewHolder.tv_pile_no.setText(data.getPile_no());
viewHolder.tv_start_time.setText(data.getStart_time());
viewHolder.tv_pile_length.setText(data.getPile_length() + "m");
viewHolder.tv_deviation.setText(data.getPile_deviation() + "mm");
viewHolder.tv_end_time.setText(data.getEnd_time());
viewHolder.tv_pile_time.setText(data.getPiling_time());
viewHolder.tv_input_marker.setText(data.getRemarks());
if (data.getStatues() == 2) {// 完成打桩
viewHolder.tv_statues.setText(activity
.getString(R.string.finish_piling));
viewHolder.iv_pile_finish.setImageResource((R.drawable.pile_finish));
} else {
// 中断打桩
viewHolder.tv_statues.setText(activity
.getString(R.string.interrupt_pile));
viewHolder.iv_pile_finish.setImageResource((R.drawable.interrupt_icon));
}
viewHolder.layout.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
activity.updatePileDialog(data.getRemarks(), data.getPile_no(),
position);
}
});
return convertView;
}


public static class ViewHolder {
TextView tv_pile_no;
TextView tv_start_time;
TextView tv_end_time;
TextView tv_pile_length;
TextView tv_deviation;
TextView tv_pile_time;
TextView tv_statues;
ImageView iv_pile_finish;
TextView tv_input_marker;
LinearLayout layout;
}


/**
* 更新单个item

* @param posi
* @param listView

* @param list

 * @param text,需要修改的内容

*/
public void updataView(int posi, PullToRefreshListview listView,
List<Construction> list, String text) {
int visibleFirstPosi = listView.getFirstVisiblePosition();
int visibleLastPosi = listView.getLastVisiblePosition();
if (posi >= visibleFirstPosi && posi <= visibleLastPosi) {
View view = listView.getChildAt(posi - visibleFirstPosi + 1);//这里我使用的是PullToRefreshListview要+1
if (view != null) {
ViewHolder holder = (ViewHolder) view.getTag();
Construction c = list.get(posi);
holder.tv_input_marker.setText(text);
c.setRemarks(text);//修改List对应的数据
}


}
}


}




activity中调用就可以了,都是项目代码

adapter.updataView(msg.arg1,listView,list,text);


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android子线程中更新UI的3种方法

在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法。 一. 引言 首先来看一下Android中消息机制: 专业术语:...
  • silleyj
  • silleyj
  • 2017年02月12日 22:30
  • 4297

ListView动态刷新某项Item

使用ViewHolder来刷新某项数据,而不用每次都全部刷新数据。 继承BaseAdapter,新建ViewHolder类。 public class TestListAdapter extend...

listView刷新单个Item

转载自:http://blog.csdn.net/yueqinglkong/article/details/46709469 使用ViewHolder来刷新某项数据,而不用每次都全部刷新数据...
  • lkx94
  • lkx94
  • 2016年08月17日 15:43
  • 175

Android ListView点击Item展开隐藏项,单个展开,多个展开

版权声明:^_^ 尊重原创,共享知识,转载请注明"_程序猿大人_"http://blog.csdn.net/a_running_wolf 我做了一些修改    手机屏幕毕竟有限,当...

单个listView展示多类型Item出现混乱显示的问题

一般来说一个listview 应该展示同一种类型的item,因为系统会对第一页的item缓存下来,这样可以在getView的时候判断view是不是空的,空就创建一个,否则就利用缓存的那个view,创建...

Listview 更新单个Item布局 和 listview.getLastVisiblePosition()=-1 问题的解决

遇到的一个问题 :项目中下载文件部分。在ListView 中单独更新一个进度条。 错误: 不能试用 adapter.notifyDataSetChanged(); 因为此方法会更新全部 Lis...

ListView中单个item的跑马灯效果;及所有item实现跑马灯

为使界面效果更完善 ,能让用户知道一条消息后面未显示的内容。需对ListView进行设置跑马灯效果。 本案例中,实现以下跑马灯效果: 1、ListView需要用手触碰点击,才实现跑马灯(且是一个ite...

GridView异步展示图片实现单个item刷新

在很多手机软件中都存在一些图片的展示和自定义图片背景,下面就来实现下 布局文件如下 ...

listView的item局部刷新

  • 2017年04月12日 11:52
  • 1.31MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ListView刷新单个item
举报原因:
原因补充:

(最多只允许输入30个字)