2014-11-04 3 views
0

Я хочу поместить AsyncTask вместо потока в этом простом кодексе SAX RSS parser в ListFragment, и что лучше Asynctask или multi thread.RSS с синтаксическим анализатором SAX

это мой код

общественного класса ListItem расширяет ListFragment {

public ArrayList<NewsItem> getValues() { 
     return values; 
} 

public void setValues(ArrayList<NewsItem> values) { 
     this.values = values; 
} 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     handler = new Handler(); 
} 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.list_news_layout, container, false); 
     return view; 
} 
enter code here 
public void onStart() { 
     super.onStart(); 
} 

public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     refresh(); 
     listAdapter = new ListAdapter(getActivity(), R.layout.listitem, 
         getValues()); 
     setListAdapter(listAdapter); 

} 
enter code here 
public void refresh() { 
     Thread th = new Thread(new Runnable() { 
       public void run() { 
         ListHandler listHandler = new ListHandler(); 
         try { 
           listHandler.processFeed(); 
           setValues(listHandler.getNewsItemList()); 
           listAdapter.setNewsItemList(getValues()); 
           listAdapter.notifyDataSetChanged(); 
         } catch (Exception e) { 
           e.printStackTrace(); 
         } 
       } 
     }); 
     th.start(); 

} 

ответ

0

Собственно AsyncTask также используется нить, но это лучше для onpostexecute и onprexecute() метод обратного вызова, если вы используете нить вы не получите это по умолчанию. .

Как этот

private class HttpAsyncDealsTask extends 
 
\t \t \t AsyncTask<String, Void, ArrayList<HashMap<String, String>>> { 
 

 
\t \t protected ArrayList<HashMap<String, String>> doInBackground(
 
\t \t \t \t String... dealslist) { 
 

 
\t \t \t ArrayList<HashMap<String, String>> chekinRsp = new ArrayList<HashMap<String, String>>(); 
 
\t \t \t // get user data from session 
 
\t \t \t HashMap<String, String> user = session.getUserDetails(); 
 
\t \t \t // mem_id 
 
\t \t \t String mem_id = user.get(SessionManager.KEY_ID); 
 
\t \t \t String rest_id = getArguments().getString("getid"); 
 
\t \t \t try { 
 

 
\t \t \t \t List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
 
\t \t \t \t \t \t 2); 
 

 
\t \t \t \t nameValuePairs.add(new BasicNameValuePair("rest_id", rest_id)); 
 
\t \t \t \t nameValuePairs.add(new BasicNameValuePair("mem_id", mem_id)); 
 
\t \t \t \t // Creating service handler class instance 
 
\t \t \t \t ServiceHandler sh = new ServiceHandler(); 
 

 
\t \t \t \t // Making a request to url and getting response 
 
\t \t \t \t String jsonStr = sh.makeServiceCall(URL, ServiceHandler.POST, 
 
\t \t \t \t \t \t nameValuePairs); 
 

 
\t \t \t \t Log.d("Response: ", "> " + jsonStr); 
 
\t \t \t \t if (jsonStr != null) { 
 
\t \t \t \t \t try { 
 
\t \t \t \t \t \t // creating new HashMap 
 
\t \t \t \t \t \t HashMap<String, String> map = new HashMap<String, String>(); 
 
\t \t \t \t \t \t JSONObject jresponse = new JSONObject(jsonStr); 
 
\t \t \t \t \t \t JSONObject msg = jresponse.getJSONObject(KEY_MSG); 
 
\t \t \t \t \t \t //String error = jresponse.getString(KEY_ERROR); 
 
\t \t \t \t \t \t String msgss = msg.getString(KEY_MSGSS); 
 
\t \t \t \t \t \t String error = msg.getString(KEY_ERROR); 
 
\t \t \t \t \t \t 
 
\t \t \t \t \t \t if(error.equalsIgnoreCase("0")) 
 
\t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t String getid = getArguments().getString("getid"); 
 
\t \t \t \t \t \t \t String getname = getArguments().getString("getname"); 
 
\t \t \t \t \t \t \t String getpoints = getArguments().getString("getpoints"); 
 
\t \t \t \t \t \t \t String getcomp = getArguments().getString("getcomp"); 
 
\t \t \t \t \t \t \t String getmemberpoint = getArguments().getString("getmemberpoint"); 
 
\t \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t System.out.println(getid + getname + getpoints + getcomp + getmemberpoint); 
 
\t \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t CheckinPref checkin = new CheckinPref(getActivity()); 
 
\t \t \t \t \t \t  checkin.Prefernce_save(getid 
 
\t \t \t \t \t \t  \t \t ,getname, getpoints 
 
\t \t \t \t \t \t  \t \t ,getcomp, getmemberpoint); 
 
\t \t \t \t \t \t \t 
 
\t \t \t \t \t \t } 
 
\t \t \t \t \t \t 
 
\t \t \t \t \t \t map.put(KEY_MSGSS, msgss); 
 
\t \t \t \t \t \t chekinRsp.add(map); 
 
\t \t \t \t \t \t // Log.d("OUT", msg); 
 
\t \t \t \t \t } catch (JSONException e) { 
 
\t \t \t \t \t \t e.printStackTrace(); 
 
\t \t \t \t \t } 
 

 
\t \t \t \t } 
 

 
\t \t \t } catch (Exception e) { 
 
\t \t \t \t Log.d("Response", e.getLocalizedMessage()); 
 
\t \t \t } 
 

 
\t \t \t return chekinRsp; // return result 
 
\t \t } 
 

 
\t \t @Override 
 
\t \t protected void onPostExecute(
 
\t \t \t \t ArrayList<HashMap<String, String>> chekinRsp) { 
 
\t \t \t System.out.println(chekinRsp.get(0).get(KEY_MSGSS)); 
 

 
\t \t \t TextView chekinResp = (TextView) getActivity().findViewById(
 
\t \t \t \t \t R.id.chekinResp); 
 
\t \t \t chekinResp.setText(chekinRsp.get(0).get(KEY_MSGSS)); 
 

 
\t \t \t Button backButton = (Button) getActivity().findViewById(
 
\t \t \t \t \t R.id.btn_restback); 
 
\t \t \t backButton.setOnClickListener(new View.OnClickListener() { 
 
\t \t \t \t public void onClick(View v) { 
 

 
\t \t \t \t \t FragmentManager fm = getActivity().getFragmentManager(); 
 
\t \t \t \t \t fm.popBackStack(); 
 
\t \t \t \t } 
 
\t \t \t }); 
 

 
\t \t } 
 

 
\t }

и начать это с помощью
новый HttpAsyncDealsTask() выполнить();

Смежные вопросы