如何获取ID并传递给下一个活动?

时间:2017-02-26 08:30:43

标签: php android

以下是我的搜索活动

public class SearchActivity extends AppCompatActivity {
    // CONNECTION_TIMEOUT and READ_TIMEOUT are in milliseconds
    public static final int CONNECTION_TIMEOUT = 10000;
    public static final int READ_TIMEOUT = 15000;
    private SimpleCursorAdapter myAdapter;
    SearchView searchView = null;
    private String[] strArrData = {"No Suggestions"};
    //List<WarehouseSalesDetails> strArrData;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search_item);
        Toolbar toolBarSearch = (Toolbar)findViewById(R.id.toolbarSearch);
        setSupportActionBar(toolBarSearch);

        final String[] from = new String[]{"title"};
        final int[] to = new int[]{android.R.id.text1};
        //setup SimpleCursorAdapter
        myAdapter = new SimpleCursorAdapter(SearchActivity.this,android.R.layout.simple_spinner_dropdown_item,null,from,to,
                CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

        new RetrieveWarehouseSalesTask(this).execute();


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.menu_search,menu);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchManager searchManager = (SearchManager)SearchActivity.this.getSystemService(Context.SEARCH_SERVICE);
        if(searchItem!=null){
            searchView = (SearchView) searchItem.getActionView();
        }
        if(searchView!=null){
            searchView.setSearchableInfo(searchManager.getSearchableInfo(SearchActivity.this.getComponentName()));
            searchView.setIconified(false);
            searchView.setSuggestionsAdapter(myAdapter);
            //getting selected on item suggestion
            searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener(){
                @Override
                public boolean onSuggestionClick(int position){
                    //Add clicked text to search box
                    CursorAdapter ca = searchView.getSuggestionsAdapter();
                    Cursor cursor = ca.getCursor();
                    cursor.moveToPosition(position);
                    searchView.setQuery(cursor.getString(cursor.getColumnIndex("title")),false);

                    return true;

                }

                @Override
                public boolean onSuggestionSelect(int position){
                    return true;
                }
            });
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
                @Override
                public boolean onQueryTextSubmit(String s){
                    return false;
                }
                @Override
                public boolean onQueryTextChange(String s){
                    //filter data
                    final MatrixCursor mc = new MatrixCursor(new String[]{
                            BaseColumns._ID,"title"
                    });
                    for(int i = 0; i<strArrData.length; i++){
                        if(strArrData[i].toLowerCase().startsWith(s.toLowerCase())){
                            mc.addRow(new Object[]{i,strArrData[i]});
                        }

                    }
                    myAdapter.changeCursor(mc);
                    return false;
                }
            });

        }
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onNewIntent(Intent intent){
        if(Intent.ACTION_SEARCH.equals(intent.getAction())){
            String query = intent.getStringExtra(SearchManager.QUERY);
            if(searchView!=null){
                searchView.clearFocus();
            }
        }
    }

    class RetrieveWarehouseSalesTask extends AsyncTask<Void,Void,Void> {
        private String TAG = ActiveWarehouseSalesFragment.RetrieveWarehouseSalesTask.class.getSimpleName();
        private String TAG_PID = "pid";
        public ProgressDialog pDialog;
        private Context context;
        //URL to get JSON details
        private String url = "http://example.com/abc.php";
        ArrayList<HashMap<String,String>> sales_details;
        JSONObject jsonObj;
        String jsonStr;
        JSONArray sales;

        //for recycler view
        private RecyclerView warehouse_recycler;
        private AdapterRecycler mAdapter;
        List<WarehouseSalesDetails> data = new ArrayList<>();

        public RetrieveWarehouseSalesTask(Context context){
            this.context = context;
            sales_details = new ArrayList<>();

        }



        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            pDialog = new ProgressDialog(context);
            pDialog.setMessage("Searching...");
            pDialog.setCancelable(false);
            pDialog.show();
        }

        @Override
        protected Void doInBackground(Void... arg0){
            HttpHandler sh = new HttpHandler();
            //making a request to URL and getting response
            jsonStr = sh.makeServiceCall(url);
            Log.e(TAG, "Response from url (SearchActivity): " + jsonStr);


            return null;
        }

        @Override
        protected void onPostExecute(Void result){
            ArrayList<String> dataList = new ArrayList<String>();
            super.onPostExecute(result);
            if(pDialog.isShowing()){
                pDialog.dismiss();
            }
            if(jsonStr != null){
                try{
                    jsonObj = new JSONObject(jsonStr);
                    //Getting JSON Array Node
                    sales = jsonObj.getJSONArray("Result");
                    //looping through all results
                    for(int i = sales.length() - 1; i >= 0 ;i--){
                        JSONObject s = sales.getJSONObject(i);
                        WarehouseSalesDetails wsd = new WarehouseSalesDetails();
                        wsd.id = s.getString("id");
                        wsd.company_name = s.getString("company_name");
                        wsd.promotion_image= s.getString("promotion_image");
                        wsd.title = s.getString("title");
                        dataList.add(s.getString("title"));
                        wsd.promotional_period = s.getString("promotional_period");
                        wsd.viewCount = s.getString("view_count");
                        data.add(wsd);
                    }
                    strArrData = dataList.toArray(new String[dataList.size()]);
                    Log.d("TAG",sales_details.toString());
                }catch(final JSONException e){
                    Log.e(TAG, "JSON parsing error: " + e.getMessage());
                }
            }else{
                Log.e(TAG,"Couldn't get json from server");
            }
            /*//update RecyclerView
            warehouse_recycler = (RecyclerView)((AppCompatActivity) context).findViewById(R.id.recyclerView);
            mAdapter = new AdapterRecycler(context, data);
            System.out.println("mAdapter size is: " + mAdapter.getItemCount());
            System.out.println("Data size is: " + data.size());
            final LinearLayoutManager layoutManager = new LinearLayoutManager(context);
            layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
            warehouse_recycler.setLayoutManager(layoutManager);
            //mAdapter.notifyDataSetChanged();
            warehouse_recycler.setAdapter(mAdapter);
            warehouse_recycler.invalidate();
            */
        }

    }
}

当用户在搜索栏中输入时,我能够显示从php获得的值。但是,我应该如何存储点击项目的id,以便我可以将其传递给下一个活动。

以下行存储标题:

strArrData = dataList.toArray(new String[dataList.size()]);

如何存储ID并识别用户点击的ID?

0 个答案:

没有答案