2013-03-02 1 views
0

У меня есть 2 действия, в 1-ом действии есть кнопка «ключевое слово» и «поиск» на основе ключевого слова, данного связанным элементы должны отображаться во втором действии в форме listview, но просто для того, чтобы проверить, что hv разместил панель поиска поверх списка и закодирована для нее, и это отлично работает, теперь проблема si хочет переместить «код функции поиска» во 2-й активность внутри onclick кнопки «поиск».Как добавить код функции поиска, используемый для «строки поиска» внутри Onclick «кнопки поиска» в android

вот мой код

@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); 
        } 

         } 

ответ

1

Давайте это следующим образом. То, что вы сейчас делаете, -> вы получаете данные из webservice в одном действии и отображаете все данные в listview. Вы добавили только функцию поиска на представленный список.

Ваше требование -> У вас должна быть кнопка поиска в first activity. Когда он будет нажат, вы должны показать связанный результат в second activity. Для этого вам нужно просто передать ключевое слово, которое было введено пользователем для следующего действия с помощью putExtras() through intents. Затем вы вызываете webservice на основе ключевого слова поиска, а не получаете общий результат. Если это не совсем то, что вы хотели, просто отредактируйте свой вопрос с большим разъяснением, чтобы иметь возможность отредактировать мой ответ.

+0

попробует это приложение в любом случае спасибо и +1 :) @Appu – jack

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