मेरे पास एक परिदृश्य है, मेरे चैट एप्लिकेशन में मैं फोटो भेजना चाहता हूं, फ़ोटो भेजने में समय लगता है। मैंने अपने आवेदन में फोटो भेजने की प्रगति दिखाने के लिए एक प्रगति पट्टी (क्षैतिज) संलग्न की है। लेकिन मैं प्रगति पट्टी को अपडेट करने में असमर्थ हूं क्योंकि यह कस्टम सूची दृश्य का आइटम है।सूची दृश्य में प्रगति पट्टी को अद्यतन करना
प्रगति पट्टी के लिए प्रगति सेट करने के लिए मेरा एसिंचटास्क यहां है लेकिन मैं इसे प्राप्त करने में सक्षम नहीं हूं।
class SendPhotoToFriend extends AsyncTask<String, String, String>{
String receiver,path = "";
public SendPhotoToFriend(String path,String receiver) {
// TODO Auto-generated constructor stub
this.path = path;
this.receiver = receiver;
}
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
ServiceDiscoveryManager sdm = ServiceDiscoveryManager
.getInstanceFor(connection);
if (sdm == null)
sdm = new ServiceDiscoveryManager(connection);
sdm.addFeature("http://jabber.org/protocol/disco#info");
sdm.addFeature("jabber:iq:privacy");
// Create the file transfer manager
FileTransferManager manager = new FileTransferManager(
connection);
FileTransferNegotiator.setServiceEnabled(connection, true);
// Create the outgoing file transfer
OutgoingFileTransfer transfer = manager
.createOutgoingFileTransfer(receiver + "/Smack");
System.out.println("Receiver of the file is "+receiver+"/smack");
Log.i("transfere file", "outgoingfiletransfer is created");
try {
long total = 0;
OutgoingFileTransfer.setResponseTimeout(30000);
transfer.sendFile(new File(path), "Description");
Log.i("transfere file", "sending file");
while (!transfer.isDone()) {
//Thread.sleep(1000);
total+=transfer.getProgress();
publishProgress(""+(int)((total*100)/transfer.getFileSize()));
Log.i("transfere file", "sending file status "
+ transfer.getStatus() + "progress: "
+ transfer.getProgress());
if (transfer.getStatus() == org.jivesoftware.smackx.filetransfer.FileTransfer.Status.error) {
Log.i("transfere file", "Errorrr isss: "
+ transfer.getError()+transfer.getPeer());
transfer.cancel();
break;
}
}
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("transfere file", "sending file done");
return null;
}
@Override
protected void onProgressUpdate(final String... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View view =inflater.inflate(R.layout.user_chat_send_chat, null);
ProgressBar p_Bar = (ProgressBar)view.findViewById(R.id.progress_bar_image);
p_Bar.setProgress(Integer.parseInt(values[0]));
customAdapter1.notifyDataSetChanged();
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
}
प्रगति बार कस्टम सूची दृश्य का दृश्य है, मैं इसे रन टाइम पर अपडेट करना चाहता हूं।
धन्यवाद
क्या मुझे इसे getView विधि से कॉल करना चाहिए? –
यह निर्णय आपके ऐप के सॉफ़्टवेयर आर्किटेक्चर पर बहुत निर्भर करता है। कोई गलत या सही नहीं है। यह और अधिक है जहां यह आपके AsyncTask को कॉल करने के लिए और अधिक समझ में आता है .. मुझे डर है कि मैं आपके लिए इस प्रश्न का उत्तर नहीं दे सकता। – Taig
ठीक है धन्यवाद। मैं इसे देख लूंगा और आपको वापस कर दूंगा –