0

私が今していることは--> 1 つのアクティビティで Web サービスからデータを取得し、データ全体をリストビューに表示しています。提示されたリストビュー自体に検索機能を追加しました。

私の要件は --> 最初のアクティビティに検索ボタンが必要です。クリックすると、関連する結果が 2 番目のアクティビティに表示されるはずです。これを行うには、2 番目のアクティビティ検索機能のキーワードである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

インテントはアクティビティ用であり、その中のメソッドではないため、特定のメソッドを呼び出すためにそれを使用することはできませんが、エクストラを使用して何をしたいのかを理解することはできます\

インテントからエクストラを取得した後のように、

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