में Asynctask और webservice के साथ स्वत: पूर्ण टेक्स्ट व्यू मैं सर्वर के साथ AsyncTask
का उपयोग करके स्वत: पूर्ण करने की कोशिश कर रहा हूं। मैंने अपना कोड यहां साझा किया।एंड्रॉइड 4
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.mainautocomplete);
textView.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
}
@Override
public void beforeTextChanged(CharSequence charSequence, int arg1, int arg2, int arg3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
String text=charSequence.toString();
if (text.length() > 3) {
MyAsyncTask myTask = new MyAsyncTask();
try {
ArrayList<String> adapterList = new ArrayList<String>();
adapterList=myTask.execute(url).get();/*My Web service url*/
if(!adapterList.isEmpty()){
Log.v("ADPTER LIST",adapterList.toString());
adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.list_item, adapterList);
textView.setAdapter(adapter);
}else{
Log.v("ADPTER LIST","No VALUES");
}
} catch (InterruptedException e) {
Log.v("catch",e.getMessage());
} catch (ExecutionException e) {
Log.v("catch2",e.getMessage());
}
}
}
});
और मेरे AsyncTask
कोड है,
private class MyAsyncTask extends AsyncTask<String, Void, ArrayList<String>>{
@Override
protected void onPreExecute(){
pd = ProgressDialog.show(HomeLayoutActivity.this,"", "Please Wait!");
}
@Override
protected ArrayList<String> doInBackground(String... params) {
try {
String myQuery=params[0];
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = null;
InputStream is = null;
String result = null;
StringBuilder sb = null;
response = httpClient.execute(new HttpGet(myQuery));
is = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
JSONArray jArray = new JSONArray(result);
JSONObject jData = null;
tags.clear();
for (int i = 0; i < jArray.length(); i++) {
jData = jArray.getJSONObject(i);
tags.add(jData.getString("tagname"));
}
Log.v("JSON",""+tags.toString());
} catch(Exception e){
Log.v("MUGBUG4",e.getMessage());
}
return tags;
}
@Override
protected void onProgressUpdate(Void...strings){
}
@Override
protected void onPostExecute(ArrayList<String> result){
Log.v("OPE",result.toString());
pd.dismiss();
}
}
मेरे समस्या है,
- मैं
ArrayList
के परिणामों लॉग इन कर सकते हैं:यह मेरा
AutocompleteTextwatcher
के लिए कोड हैAsyncTask
से (मैंने लॉग और चेक किया)। लेकिन मान स्वतः पूर्ण ड्रॉपडाउन में नहीं दिख रहे हैं। - मैं यहां हैरान हूं, मैंने टाइप किए गए तीन से अधिक वर्णों के लिए वेब सर्वर को ऑटो पूर्ण अनुरोध किया है। एक बार 3 से अधिक वर्ण टाइप करने के बाद, अनुरोध चल रहा है, कोई सुझाव नहीं दिखाया गया है। लेकिन एक बार अनुरोध के बाद टाइप किए गए 3 से कम वर्णों के लिए दिखाए गए सुझाव।
- मेरे कोड से कोई अपवाद नहीं है।
क्या मैं करने की कोशिश की,
- मैं
AsyncTask
कीonPostExecute
में अनुकूलक सेट करने की कोशिश की। वही आउटपुट दिखा रहा है। - मैंने एंड्रॉइड 2.3 एम्यूलेटर के साथ प्रयास किया। यह ठीक काम कर रहा है।
एंड्रॉइड 4 और Asynctask
doInBackground()
के साथ कोई समस्या है?
मैं एक ही था समस्या, यह एडाप्टर से पहले इसे सेट करने के बाद दिखाया गया है, लेकिनडेटाट चेंज() को सूचित करने के बारे में क्या है। क्या वह काम कर सकता है? – kabuto178
यहां कोड पोस्ट करने का तरीका पता नहीं लगा सकता है, लेकिन शब्दों में - सब कुछ ठीक होना चाहिए DataSetChanged()। आपके पास वास्तव में क्या समस्या है? – Infernus