2013-03-04 2 views
0

Что я делаю сейчас -> я получаю данные из webservice в одном действии и отображаю все данные в списке. Я добавил только функцию поиска в представленном списке.Как использовать намерение вызвать метод следующей активности в android

Мое требование -> У меня должна быть кнопка поиска в первом действии. Когда он щелкнут, должен показать связанный результат во втором действии, чтобы сделать это добавлено putExtras в таком намерении intent.putExtra("search", searchBox);, что является вторым ключевым словом функции поиска активности. но все же m не получает результат поиска.

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 


StrictMode.ThreadPolicy policy = new  StrictMode.ThreadPolicy.Builder().permitAll().build(); 

StrictMode.setThreadPolicy(policy); 

final EditText searchBox=(EditText) findViewById(R.id.search); 
final ListView list=(ListView)findViewById(android.R.id.list); 

//get the LayoutInflater for inflating the customomView 
//this will be used in the custom adapter 
inflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 


    final ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 
    // Creating JSON Parser instance 
      final JSONParser jParser = new JSONParser(); 

      // getting JSON string from URL 
      JSONObject json = jParser.getJSONFromUrl(URL); 
      try { 
       posts = json.getJSONArray(KEY_POSTS); 

    // looping through all song nodes <song> 
      for(int i = 0; i < posts.length(); i++){ 
       JSONObject c = posts.getJSONObject(i); 
       // Storing each json item in variable 
       String id = c.getString(KEY_ID); 
       String title = c.getString(KEY_TITLE); 
       String date = c.getString(KEY_DATE); 
       String content = c.getString(KEY_CONTENT); 
       // to remove all <P> </p> and <br /> and replace with "" 
       content = content.replace("<br />", ""); 
       content = content.replace("<p>", ""); 
       content = content.replace("</p>", ""); 

       //authornumber is agin JSON Object 
       JSONObject author = c.getJSONObject(KEY_AUTHOR); 
       String name = author.getString(KEY_NAME); 

       String url = null; 
       String slug = null; 
       try { 
       JSONArray atta = c.getJSONArray("attachments"); 
       for(int j = 0; j < atta.length(); j++){ 
        JSONObject d = atta.getJSONObject(j); 

        slug = d.getString(KEY_SLUG); 

        JSONObject images = d.getJSONObject(KEY_IMAGES); 

        JSONObject thumbnail = images.getJSONObject(KEY_THUMB_URL); 
        url = thumbnail.getString(KEY_URL); 

       } 
       } catch (Exception e) { 
        e.printStackTrace(); 

       } 

     // creating new HashMap 
     HashMap<String, String> map = new HashMap<String, String>(); 

     // adding each child node to HashMap key => value 
     map.put(KEY_ID, id); 
     map.put(KEY_TITLE, title); 
     map.put(KEY_DATE, date); 
     map.put(KEY_NAME, name); 
     map.put(KEY_CONTENT, content); 
     map.put(KEY_SLUG, slug); 
     map.put(KEY_URL, url); 
    //    System.out.println("the map is title "+map.get("title")); 
    //title2.add(map.get("title")); 
     // adding HashList to ArrayList 
     songsList.add(map); 
      } 

      }catch (JSONException e) { 
       e.printStackTrace(); 

       } 


      //searchResults=OriginalValues initially 
      searchResults=new ArrayList<HashMap<String, String>>(songsList); 

    // Getting adapter by passing json data ArrayList 
     adapter=new LazyAdapter(this, songsList); 

     list.setAdapter(adapter); 


     searchBox.addTextChangedListener(new TextWatcher() { 

      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       //get the text in the EditText 
       searchString=searchBox.getText().toString(); 
       textLength=searchString.length(); 
       searchResults.clear(); 

       for(int i=0;i<songsList.size();i++) 
       { 
       playerName=songsList.get(i).get("title").toString(); 
       System.out.println("player name "+playerName); 
       if(textLength<=playerName.length()){ 
       //compare the String in EditText with Names in the ArrayList 
         if(searchString.equalsIgnoreCase(playerName.substring(0,textLength))){ 
       searchResults.add(songsList.get(i)); 
       System.out.println("the array list is "+songsList.get(i)); 
       adapter=new LazyAdapter(Home.this, searchResults); 

       list.setAdapter(adapter); 
       } 

        } 
+0

aim.putExtra ("search", searchBox); Что такое searchBox? n что вы хотите передать второму действию? ваш вопрос не очень ясен ... – vnshetty

+0

просто выполните поиск в самой первой активности, а затем нажмите кнопку поиска, проанализируйте searchResults (вместо searchBox) до следующего действия с использованием намерения. –

+0

nw i hd добавил код поиска в первую активность, но m получает исключение нулевого указателя в ленивом адаптере @ MehulJoisar – jack

ответ

0

Intents предназначены для деятельности, а не методы внутри них, поэтому вы не можете использовать его, чтобы вызвать любой конкретный метод, однако вы можете использовать дополнительные услуги, чтобы выяснить, что вы хотите сделать \

как после того, когда вы получаете Дополнительно от Намерения вы можете,

if extras has "search" value 
then do something about it 

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

  • Нет связанных вопросов^_^