0

我现在正在做的是-> 我在一个活动中从 web 服务获取数据并在列表视图中显示整个数据。我在呈现的列表视图本身上添加了一个搜索功能。

我的要求是 --> 我应该在第一个活动中有一个搜索按钮。当它被点击时,应该在第二个活动中显示相关结果,这样做putExtras在意图中添加了这样intent.putExtra("search", searchBox);的第二个活动搜索功能关键字。但仍然没有得到搜索到的输出。

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

                  }
4

1 回答 1

0

意图是针对活动而不是其中的方法,因此您不能使用它来调用任何特定方法,但是您可以使用附加功能来确定您想要做什么\

就像当你从 Intent 获得额外的东西之后,你可以,

 if extras has "search" value 
 then do something about it
于 2013-03-04T05:55:40.913 回答