Listview复用出现问题

raychongzi 2017-07-22 02:48:51
listview每个item里面有个下载进度条,比如第一个item点了下载,此时进入了下载,然后我划上去再划回来,第一个item又变回没下载的状态了,我也试过给position监听,可是还是如此,请问怎么解决


public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder viewHolder;
final Item item = list.get(position);
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_songslistview, null);
viewHolder = new ViewHolder();
viewHolder.nameTextView = (TextView) convertView
.findViewById(R.id.txt_name);

viewHolder.ImageView = (RoundedRectangleImageView) convertView
.findViewById(R.id.img_logo);
viewHolder.DownloadBtn = (Button) convertView.findViewById(R.id.DownloadBtn);
viewHolder.DownloadFinishBtn = (Button) convertView.findViewById(R.id.DownloadFinishBtn);
viewHolder.DownloadPauseBtn = (Button) convertView.findViewById(R.id.DownloadPauseBtn);
viewHolder.DownloadingBtn = (RoundProgressBar)convertView.findViewById(R.id.DownloadingBtn);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Picasso.with(context).load(item.getLogo()).into(viewHolder.ImageView);

viewHolder.DownloadBtn.setOnClickListener(new downloadClicklis(position,convertView));
viewHolder.DownloadPauseBtn.setOnClickListener(new downloadPauseClicklis(position,convertView));

return convertView;
}
class downloadClicklis implements OnClickListener {

private int position;
View convertview;
public downloadClicklis(int pos,View cv) {
position = pos;
convertview=cv;
}

@Override
public void onClick(View v) {
final SongItem item = list.get(position);
ViewHolder viewHolder = (ViewHolder) convertview.getTag();
Toast.makeText(context, position+"", Toast.LENGTH_SHORT).show();
// TODO Auto-generated method stub
//仅在wifi下载功能提醒
boolean downloadWifi = TuxiaobeiApplication.tuxiaobeiSetting.isDownloadWifi();
if(Helper.isNetworkAvailable(context)){
if(downloadWifi && Helper.is3G(context)){
//正在使用3G网络,没有设置无wifi使用流量下载漫画时,则提醒
final AlertDialog downloadWifiDialog = new AlertDialog.Builder(context).create();
downloadWifiDialog.show();
downloadWifiDialog.setCanceledOnTouchOutside(false);
Window window = downloadWifiDialog.getWindow();
window.setContentView(R.layout.download_wifi_dialog);
RelativeLayout cancelLayout = (RelativeLayout) window.findViewById(R.id.id_cancel_ly);
RelativeLayout closeLayout = (RelativeLayout) window.findViewById(R.id.id_close_ly);
cancelLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
downloadWifiDialog.dismiss();
}
});
closeLayout.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
downloadWifiDialog.dismiss();
Application.Setting.setDownloadWifi(false);
}

});
return;
}

DownloadItem downloadItem = mDatabaseManager.getDownloadItem(item.getId());
if(downloadItem != null && downloadItem.getStatus() == DownloadState.STATE_PAUSE){
Toast.makeText(context, item.geturl(), Toast.LENGTH_SHORT).show();
downloadItem.setDownloadUrl(item.geturl());
downloadPauseAndResume(downloadItem,position);
}else{
download(item,position);
}
Helper.hideView(viewHolder.DownloadBtn);
Helper.showView(viewHolder.DownloadPauseBtn);
}else{
//showLongToast(R.string.network_noconnect);
Helper.showNoNetworkDialog(context);
}
}
}
...全文
221 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒冰大神 2017-07-24
  • 打赏
  • 举报
回复
list.get(position) 中 保存下载状态,下载进度,
jklwan 2017-07-24
  • 打赏
  • 举报
回复
Item中保存下载状态,下载进度,getview时重新设置下载状态和进度。

80,361

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧