如何在android中在运行时更新列表项?
在我的android应用程序中,我使用FTP将文件上传到服务器。我有一个文件列表,我正在显示一个列表视图。当用户选择列表项并点击上传按钮时,它正在上传。我想显示所选文件的上传进度。我完成了这一部分,但问题是当我滚动listview时,不同文件(未选择上载)的进度会显示出来。我的确切期望就像贝洛的形象。请任何人帮助我 //fItem.getType() int fileType=fItem.getType(); long data=fItem.getData() 更新进度的代码如何在android中在运行时更新列表项?,android,listview,Android,Listview,在我的android应用程序中,我使用FTP将文件上传到服务器。我有一个文件列表,我正在显示一个列表视图。当用户选择列表项并点击上传按钮时,它正在上传。我想显示所选文件的上传进度。我完成了这一部分,但问题是当我滚动listview时,不同文件(未选择上载)的进度会显示出来。我的确切期望就像贝洛的形象。请任何人帮助我 //fItem.getType() int fileType=fItem.getType(); long data=fItem.getData() 更新进度的代码
final ListView listView = mLocalFileListView;
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (pos < firstListItemPosition || pos > lastListItemPosition ) {
convertView= listView.getAdapter().getView(pos, null, listView);
} else {
final int childIndex = pos- firstListItemPosition;
convertView=listView.getChildAt(childIndex);
}
convertView=listView.getChildAt(pos);
//View convertView = listView.getChildAt(selectedFiles.get(0).getIndex()-first);
if(convertView!=null){
ImageView iv=(ImageView)convertView.findViewById(R.id.file_list_item_icon);
iv.setVisibility(View.VISIBLE);
CheckBox cb=(CheckBox)convertView.findViewById(R.id.file_list_item_selector);
cb.setVisibility(View.VISIBLE);
TextView tv=(TextView)convertView.findViewById(R.id.textView1);
ProgressBar pb=(ProgressBar)convertView.findViewById(R.id.progressBar1);
pb.setVisibility(View.INVISIBLE);
pb.setProgress(percent);
pb.setSecondaryProgress(percent+10);
tv.setVisibility(View.INVISIBLE);
tv.setText(percent + "%" );
mAdapter.notifyDataSetChanged();
final ListView ListView=mLocalFileListView;
final int firstListItemPosition=listView.getFirstVisiblePosition();
final int lastListItemPosition=firstListItemPosition+listView.getChildCount()-1;
if(poslastListItemPosition){
convertView=listView.getAdapter().getView(pos,null,listView);
}否则{
final int childIndex=pos-firstListItemPosition;
convertView=listView.getChildAt(childIndex);
}
convertView=listView.getChildAt(pos);
//View convertView=listView.getChildAt(selectedFiles.get(0.getIndex()-first);
如果(convertView!=null){
ImageView iv=(ImageView)convertView.findViewById(R.id.file\u list\u item\u图标);
iv.设置可见性(视图可见);
复选框cb=(复选框)convertView.findViewById(R.id.file\u list\u item\u选择器);
cb.setVisibility(View.VISIBLE);
TextView tv=(TextView)convertView.findViewById(R.id.textView1);
ProgressBar pb=(ProgressBar)convertView.findViewById(R.id.progressBar1);
pb.setVisibility(视图不可见);
pb.进度(百分比);
pb.设置秒程序(百分比+10);
tv.setVisibility(视图.不可见);
tv.setText(百分比+“%”);
mAdapter.notifyDataSetChanged();
是的,您需要提供问题代码我想在这里放置的代码是适配器还是活动,或者两者都是,如果它们不是太大。如果它们更大,从适配器的getView()
开始,无论您在何处显示进度,都在synctask中添加了一个上载代码
if(fileType == Globals.FILE_TYPE_DIRECTORY) {
if(data <= 1){
viewHolder.fDataTextView.setText(data+" Item");
}
else if(data == Long.MAX_VALUE) {
viewHolder.fDataTextView.setText("Folder");
}
else {
viewHolder.fDataTextView.setText(data+" Items");
//viewHolder.fImageviewSelection.setVisibility(View.GONE);
}
viewHolder.fIconImageView.setImageResource(Globals.ICON_DIRECTORY);
}
else if (fileType == Globals.FILE_TYPE_APPLICATION) {
viewHolder.fDataTextView.setText(Utilities.getHumanReadableFileSize(data,true));
viewHolder.fIconImageView.setImageResource(Globals.ICON_APPLICATION);
}
else if (fileType == Globals.FILE_TYPE_AUDIO) {
viewHolder.fDataTextView.setText(Utilities.getHumanReadableFileSize(data,true));
viewHolder.fIconImageView.setImageResource(Globals.ICON_AUDIO);
}
else if (fileType == Globals.FILE_TYPE_IMAGE) {
viewHolder.fDataTextView.setText(Utilities.getHumanReadableFileSize(data,true));
viewHolder.fIconImageView.setImageResource(Globals.ICON_IMAGE);
}
else if (fileType == Globals.FILE_TYPE_TEXT) {
viewHolder.fDataTextView.setText(Utilities.getHumanReadableFileSize(data,true));
viewHolder.fIconImageView.setImageResource(Globals.ICON_TEXT);
}
else if (fileType == Globals.FILE_TYPE_VIDEO) {
viewHolder.fDataTextView.setText(Utilities.getHumanReadableFileSize(data,true));
viewHolder.fIconImageView.setImageResource(Globals.ICON_VIDEO);
}
else if (fileType == Globals.FILE_TYPE_PARENT) {
viewHolder.fDataTextView.setText("Parent Directory");
viewHolder.fIconImageView.setImageResource(Globals.ICON_PARENT);
}
else if (fileType == Globals.FILE_TYPE_OTHERS) {
viewHolder.fDataTextView.setText(Utilities.getHumanReadableFileSize(data,true));
viewHolder.fIconImageView.setImageResource(Globals.ICON_OTHERS);
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (files.get(position).isclicked) {
files.get(position).isclicked = false;
files.get(position).index=0;
} else {
files.get(position).isclicked = true;
files.get(position).index=position;
}
}
});
if (files.get(position).isclicked) {
cb.setChecked(true);
}
else {
cb.setChecked(false);
}
return view;
}
final ListView listView = mLocalFileListView;
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (pos < firstListItemPosition || pos > lastListItemPosition ) {
convertView= listView.getAdapter().getView(pos, null, listView);
} else {
final int childIndex = pos- firstListItemPosition;
convertView=listView.getChildAt(childIndex);
}
convertView=listView.getChildAt(pos);
//View convertView = listView.getChildAt(selectedFiles.get(0).getIndex()-first);
if(convertView!=null){
ImageView iv=(ImageView)convertView.findViewById(R.id.file_list_item_icon);
iv.setVisibility(View.VISIBLE);
CheckBox cb=(CheckBox)convertView.findViewById(R.id.file_list_item_selector);
cb.setVisibility(View.VISIBLE);
TextView tv=(TextView)convertView.findViewById(R.id.textView1);
ProgressBar pb=(ProgressBar)convertView.findViewById(R.id.progressBar1);
pb.setVisibility(View.INVISIBLE);
pb.setProgress(percent);
pb.setSecondaryProgress(percent+10);
tv.setVisibility(View.INVISIBLE);
tv.setText(percent + "%" );
mAdapter.notifyDataSetChanged();