Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
192 views
in Technique[技术] by (71.8m points)

android - get position in autocompletetextview

I have two autocompletetextviews,in first autocompletetextview i am getting items from server using json,the following is response for that

{"status":"success","clientlist":[{"cid":"1","name":"margi"},{"cid":"2","name":"steven"}],"productboxtype":[{"pbxid":"1","pbxname":"1 Dozen","qtyperbox":"12"},{"pbxid":"2","pbxname":"2 Dozens","qtyperbox":"24"},{"pbxid":"3","pbxname":"3 Dozens","qtyperbox":"36"}]}

i am able to get names in my first autocomplete and it works fine,

Now issue is suppose user select item "margi" and its cid is 1,so again i am sending request to server and trying to get productnames of 'margi',and its response is

{"status":"success","clientproduct":[{"pid":"4","name":"kangan pair","unitprice":"1500","boxqty":"1","bulkprice":[{"minqty":"10","price":"1500"},{"minqty":"15","price":"1470"},{"minqty":"20","price":"1460"}]}]}

MYActivity.java

public class MainActivity extends Activity {
private AutoCompleteTextView acTextView;
private String catidtemp;
JSONParser jsonParser = new JSONParser();
private AutoCompleteTextView autoproduct;
private static final String FEEDBACK_URL = "";
private static final String FEEDBACK_SUCCESS = "status";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    acTextView = (AutoCompleteTextView) findViewById(R.id.autocmplte_clorder_clname);
    acTextView.setAdapter(new SuggestionAdapterClientList(this,acTextView.getText().toString()));

    autoproduct=(AutoCompleteTextView)findViewById(R.id.autocmplte_clorder_product);
    autoproduct.setAdapter(new SuggestionAdapterClientProduct(this, autoproduct.getText().toString()));

    acTextView.setOnItemClickListener(new OnItemClickListener() {



        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            JsonParseClientProduct jp=new JsonParseClientProduct();
              List<SuggestGetSetClientProduct> list1 =jp.getParseJsonWCF(
                                                autoproduct.getText().toString());
              new AttemptLogin(list1.get(position).getId()).execute();
        }
    });

}

  class AttemptLogin extends AsyncTask<String, String, String> {

    boolean failure = false;
    private ProgressDialog pDialog;

    private int selected_cid=1;
    AttemptLogin(int selected_cid){
    this.selected_cid=selected_cid;
    }


    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Sending..");
        pDialog.setIndeterminate(true);
      //  pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress));
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @SuppressWarnings("unused")
    @Override
    protected String doInBackground(String...args) {
        //Check for success tag
        //int success;
        Looper.prepare();



         try {

             JsonParseClientList jp=new JsonParseClientList();
                List<NameValuePair> params = new ArrayList<NameValuePair>();
             List<SuggestGetSetClientList> list =jp.getParseJsonWCF(acTextView.getText().toString());

                 for(int i = 0;i<list.size();i++)
                 {
                   if(list.get(i).getName().equals(acTextView.getText().toString()))
                   // params.add(new BasicNameValuePair("cid",list.get(i).getId()));

                       params.add(new BasicNameValuePair("cid",selected_cid);

                     //  catid=list.get(i).getId();
                  // catidtemp=list.get(i).getId();


                 }

                 catidtemp=list.get(0).id.toString();
            // catidtemp=list.get(i).getId();
             System.out.println("cattttttiiiiddd????"+catidtemp);
             params.add(new BasicNameValuePair("action", "clientproduct"));

             System.out.println("su gayu server ma????"+params);

             Log.d("request!", "starting");
             // getting product details by making HTTP request
             JSONObject json = jsonParser.makeHttpRequest (
                 FEEDBACK_URL, "POST", params);
             //check your log for json response
             Log.d("Login attempt", json.toString());

             JSONObject jobj = new JSONObject(json.toString());
             final String msg = jobj.getString("msg");




             return json.getString(FEEDBACK_SUCCESS);

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

    // After completing background task Dismiss the progress dialog

    protected void onPostExecute(String file_url) {
        //dismiss the dialog once product deleted
        pDialog.dismiss();

        //parentcat.getText().clear();
}}
  public class SuggestGetSetClientProduct {

        String id,name;
        public SuggestGetSetClientProduct(String id, String name){
            this.setId(id);
            this.setName(name);
        }
        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

   public class JsonParseClientProduct {


        double current_latitude,current_longitude;
        public JsonParseClientProduct(){}
        public JsonParseClientProduct(double current_latitude,double current_longitude){
            this.current_latitude=current_latitude;
            this.current_longitude=current_longitude;
        }
        public List<SuggestGetSetClientProduct> getParseJsonWCF(String sName)
           {
            List<SuggestGetSetClientProduct> ListData = new ArrayList<SuggestGetSetClientProduct>();
            try {
               String temp=sName.replace(" ", "%20");
               URL js = new URL("");

               System.out.println("what the fuck"+js);
               URLConnection jc = js.openConnection();
               BufferedReader reader = new BufferedReader(new InputStreamReader(jc.getInputStream()));
               String line = reader.readLine();
               JSONObject jsonResponse = new JSONObject(line);
               JSONArray jsonArray = jsonResponse.getJSONArray("clientproduct");
               for(int i = 0; i < jsonArray.length(); i++){
                   JSONObject r = jsonArray.getJSONObject(i);
                   ListData.add(new SuggestGetSetClientProduct(r.getString("pid"),r.getString("name")));
               }


           } catch (Exception e1) {
               // TODO Auto-generated catch block
               e1.printStackTrace();
           }
            return ListData;

           }
    }
    public class SuggestionAdapterClientProduct extends ArrayAdapter<String>{


        protected static final String TAG = "SuggestionAdapter";
        private List<String> suggestions;
        public SuggestionAdapterClientProduct(Activity context, String nameFilter) {
            super(context, android.R.layout.simple_dropdown_item_1line);
            suggestions = new ArrayList<String>();
        }

        @Override
        public int getCount() {
            return suggestions.size();
        }

        @Override
        public String getItem(int index) {
            return suggestions.get(index);
        }

        @Override
        public Filter getFilter() {
            Filter myFilter = new Filter() {
                @Override
                protected FilterResults performFiltering(CharSequence constraint) {
                    FilterResults filterResults = new FilterResults();
                    JsonParseClientProduct jp=new JsonParseClientProduct();
                    if (constraint != null) {
                        // A class that queries a web API, parses the data and
                        // returns an ArrayList<GoEuroGetSet>
                        List<SuggestGetSetClientProduct> new_suggestions =jp.getParseJsonWCF(constraint.toString());
                        suggestions.clear();
                        /*for (int i=0;i<new_suggestions.size();i++) {
                        suggestions.add(new_suggestions.get(i).getName());
                    }*/

                    for (int i=0;i<new_suggestions.size();i++) {
                        String name=new_suggestions.get(i).getName();
                        String id=new_suggestions.get(i).getId();
                        System.out.println("checis id"+id);
                        if(name.contains(constraint)){
                        suggestions.add(new_suggestions.get(i).getName());


                           }   
                    }
                        // Now assign the values and count to the FilterResults
                        // object
                        filterResults.values = suggestions;
                        filterResults.count = suggestions.size();
                    }
                    return filterResults;
                }

                @Override
                protected void publishResults(CharSequence contraint,
                        FilterResults results) {
                    if (results != null && results.count > 0) {
                        notifyDataSetChanged();
                    } else {
                        notifyDataSetInvalidated();
                    }
                }
            };
            return myFilter;
        }
    }

}

issue is here..I am not able to get position of id..

 try {

             JsonParseClientList jp=new JsonParseClientList();
                List<NameValuePair> params = new ArrayList<NameValuePair>();
             List<SuggestGetSetClientList> list =jp.getParseJsonWCF(acTextView.getText().toString());

                 for(int i = 0;i<list.size();i++)
                 {
                   if(list.get(i).getName().equals(acTextView.getText().toString()))
                    params.add(new BasicNameValuePair("cid",list.get(i).getId()));

                     //  catid=list.get(i).getId();

                 }

                 for(int b=0;b<list.size();b++)
                 {
                     catidtemp=list.get(0).id.toString();
                     System.out.println("cattttttiiiiddd????"+catidtemp);
                 }
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Use list1 for getting selected cid from ListView:

@Override
  public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
      JsonParseClientProduct jp=new JsonParseClientProduct();
      List<SuggestGetSetClientProduct> list1 =jp.getParseJsonWCF(
                                        autoproduct.getText().toString());
      new AttemptLogin(list1.get(position).getId()).execute();
}

and create constructor in AttemptLogin class:

class AttemptLogin extends AsyncTask<String, String, String> {

    boolean failure = false;
    private ProgressDialog pDialog;
    private int selected_cid=1;
    AttemptLogin(int selected_cid){
    this.selected_cid=selected_cid;
    }
   //... your code 
}

now use selected_cid for to add cid as parameter :

params.add(new BasicNameValuePair("cid",selected_cid);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...