我在listview項目中有按鈕,當它被點擊時,水平progressbar開始加載,當它完成時,加載兩個按鈕應該出現在listview中的那個項目中。當進度條下載時,如果我將該項目從屏幕上滾動下來,然後將其向後滾動,進度條消失並出現兩個按鈕。下載過程正常。但是我想在下載時一直顯示進度條? 在這裏我的適配器。請任何幫助。在此先感謝將視圖從屏幕上滾動後,列表視圖的視圖返回到原始狀態
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ArrayList<String> array=JournalArray.get(position);
LayoutInflater inflator = ((Activity) activity).getLayoutInflater();
final Hashtable<Integer, Integer> hash = new Hashtable<Integer, Integer>();
final Button imgAR;
final Button imgPDF;
final Button imgDown;
final Button btnDel;
final TextProgressBar progress;
//ConnectionDetector cd=new ConnectionDetector(activity);
final Database db=new Database(activity);
//final ImageView imgViewFlag;
//final TextView txtViewTitle,txtProgress;
if(convertView==null)
{
convertView = inflator.inflate(R.layout.familylist_item, null);
}
progress=(TextProgressBar)convertView.findViewById(R.id.downprogress);
progress.setTextColor(Color.BLACK);
//progress.setTag(tag)
//progress.setVisibility(View.GONE);
TextView txtViewTitle = (TextView) convertView.findViewById(R.id.text);
//view.txtProgress=(TextView)convertView.findViewById(R.id.textProgress);
ImageView imgViewFlag = (ImageView) convertView.findViewById(R.id.imageView1);
imgAR=(Button)convertView.findViewById(R.id.imageAR);
//view.imgAR.setTag(view);
imgDown=(Button)convertView.findViewById(R.id.imageDown);
//view.imgDown.setTag(view);
imgPDF=(Button)convertView.findViewById(R.id.imagePDF);
//view.imgPDF.setTag(view);
//view.progress=(ProgressBar)convertView.findViewById(R.id.downprogress);
btnDel=(Button)convertView.findViewById(R.id.btnDel);
//view.btnDel.setTag(view);
//convertView.setTag(view);
if(DeleteBin){
if(XMLParser.CheckFileInSD(array.get(5))){
btnDel.setVisibility(View.VISIBLE);
imgAR.setVisibility(View.GONE);
imgDown.setVisibility(View.GONE);
imgPDF.setVisibility(View.GONE);
progress.setVisibility(View.GONE);
}
else{
imgDown.setVisibility(View.GONE);
imgAR.setVisibility(View.GONE);
btnDel.setVisibility(View.GONE);
imgPDF.setVisibility(View.GONE);
progress.setVisibility(View.GONE);
}
}
else{
btnDel.setVisibility(View.GONE);
if(!XMLParser.CheckFileInSD(array.get(5))){
imgAR.setVisibility(View.GONE);
imgPDF.setVisibility(View.GONE);
imgDown.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
}
else{
imgAR.setVisibility(View.VISIBLE);
imgPDF.setVisibility(View.VISIBLE);
imgDown.setVisibility(View.GONE);
progress.setVisibility(View.GONE);
}
}
txtViewTitle.setText(array.get(1));
channelid=array.get(4);
RelativeLayout.LayoutParams paramrel = new RelativeLayout.LayoutParams(width/5, height/5);
paramrel.leftMargin = width/10;
imgViewFlag.setLayoutParams(paramrel);
imgViewFlag.setImageDrawable(Drawable.createFromPath(new File(array.get(3)).getAbsolutePath()));
btnDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pos=position;
Deletefiles(pos);
Toast.makeText(activity, "Сэтгүүл амжилттай усгтгагдлаа", Toast.LENGTH_SHORT).show();
btnDel.setVisibility(View.GONE);
}
});
imgAR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
channelid=array.get(4);
Intent intent=new Intent(activity,ARELViewActivity.class);
intent.putExtra("channelid", db.getConfigByChannelID(channelid));
activity.startActivity(intent);
}
});
imgPDF.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SdCardPath")
@Override
public void onClick(View v) {
path=array.get(5);
String PATH=Environment.getExternalStorageDirectory().getAbsolutePath()+ "/sdcard/.FamilyMagazine/";
openBook(PATH+XMLParser.getFileName(path));
}
});
imgDown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Database db=new Database(activity);
final ConnectionDetector cd=new ConnectionDetector(activity);
if(downloading<3){
downloading++;
path=array.get(5);
channelid=array.get(4);
pos=position;
progress.setMax(100);
progress.setProgress(0);
progress.setVisibility(View.VISIBLE);
imgDown.setVisibility(View.GONE);
progress.setText("Татаж байна...");
new AsyncTask<View, String, String>() {
private View v;
@Override
protected String doInBackground(View... params) {
v = params[0];
int count;
isLoading=true;
//mprogress=progress;
String result="0";
if(cd.isConnectingToInternet()){
getChannel(channelid);
try {
URL url = new URL(path);
URLConnection conection = url.openConnection();
conection.connect();
// getting file length
lenghtOfFile = conection.getContentLength();
// input stream to read file - with 8k buffer
InputStream input = new BufferedInputStream(url.openStream(), 8192);
String PATH="/mnt/sdcard/sdcard/.FamilyMagazine";
File dir=new File(PATH);
boolean test=dir.mkdirs();
OutputStream output = new FileOutputStream("/mnt/sdcard/sdcard/.FamilyMagazine/"+XMLParser.getFileName(path));
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
// publishing the progress....
// After this onProgressUpdate will be called
publishProgress(""+(int)((total*100)/lenghtOfFile));
// writing data to file
output.write(data, 0, count);
hash.put(pos, (int)((total*100)/lenghtOfFile));
}
// flushing output
output.flush();
// closing streams
output.close();
input.close();
} catch (Exception e) {
result=e.toString();
}
}
else
result="Интернетэд холбогдоогүй байна!";
return result;
}
protected void onProgressUpdate(String... progresses) {
// setting progress percentage
progress.setProgress(Integer.parseInt(progresses[0]));
int x=lenghtOfFile/100 * Integer.parseInt(progresses[0])/1048576;
progress.setText(x+"MB/"+lenghtOfFile/1048576+"MB");
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//view.txtProgress.setVisibility(View.GONE);
downloading--;
isLoading=false;
if(result.equals("0")){
imgDown.setVisibility(View.GONE);
progress.setVisibility(View.GONE);
btnDel.setVisibility(View.GONE);
imgAR.setVisibility(View.VISIBLE);
imgPDF.setVisibility(View.VISIBLE);
}
else
{
Toast.makeText(activity, result, Toast.LENGTH_LONG).show();
imgDown.setVisibility(View.VISIBLE);
btnDel.setVisibility(View.GONE);
imgAR.setVisibility(View.GONE);
imgPDF.setVisibility(View.GONE);
}
}
}.execute(v);
}
else
Toast.makeText(activity, "Өөр сэтгүүл татаж байна\n Түр хүлээнэ үү", Toast.LENGTH_LONG).show();
}
});
return convertView;
}
爲此目的使用UIL。緩存圖像。如果在滾動過程中已下載,則無需再次下載。您可以在下載 – Raghunandan 2013-05-14 11:01:50
時顯示進度條,您可以在鏈接中檢查答案http://stackoverflow.com/questions/15985194/progressbar-in-each-gridview-item-android/15985261#15985261 – Raghunandan 2013-05-14 11:04:58
您可以使用下載這是getview方法的一部分。當屏幕開始滾動時,這個方法被調用。 – 2013-05-14 11:15:28