有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java AutoSearchTextView首次不显示数据

我正在实现autosearchTextView,并从web服务获取数据。当char值为3时,API会被命中。我指的是这个链接https://github.com/kyasar/markod/blob/master/app/src/main/java/com/dopamin/markod/adapter/ProductSearchAdapter.java。这也是

http://makovkastar.github.io/blog/2014/04/12/安卓-autocompletetextview-with-suggestions-from-a-web-service/

当我输入3个字符时,publishResults()方法会触发,因此不会出现下拉列表。我进行了调试,发现web服务被调用,但在此之前,publishResults()方法被触发。我得花很多时间在研发上;请帮帮我

mMutualFundAdapter = new PrimaryContractAdapter(CreateNoteActivityNew.this);  primary_atv.setThreshold(3);//will start working from 3 character
                 //setting the adapter data into the AutoCompleteTextView
                        primary_atv.setAdapter(mMutualFundAdapter);

                        primary_atv.setLoadingIndicator(
                                (安卓.widget.ProgressBar) findViewById(R.id.pb_loading_indicator));
                        primary_atv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                                PrimaryContract primaryContract = (PrimaryContract) adapterView.getItemAtPosition(position);
                                primary_atv.setText(primaryContract.getContract());
                            }
                        });

适配器-

 public PrimarySearchAdapter(Context context, ArrayList<PrimaryContract> resultList) {
                                mContext = context;
                                this.resultList = resultList;
                            }

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

                            @Override
                            public PrimaryContract getItem(int index) {
                                return resultList.get(index);
                            }

                            @Override
                            public long getItemId(int position) {
                                return position;
                            }

                            @Override 
                            public View getView(int position, View convertView, ViewGroup parent) {
                                if (convertView == null) {
                                    LayoutInflater inflater = (LayoutInflater) mContext
                                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                                    convertView = inflater.inflate(R.layout.drop_down_layout, parent, false);
                                }
                                ((TextView) convertView.findViewById(R.id.heading)).setText(getItem(position).getText());

                                return convertView;
                            }


                            @Override
                            public Filter getFilter() {
                                Filter filter = new Filter() {
                                    @Override
                                    protected FilterResults performFiltering(CharSequence constraint) {
                                        FilterResults filterResults = new FilterResults();
                                        if (constraint != null) {

                                            findData(mContext, constraint.toString());


                                            if (contractArrayList != null && contractArrayList.size()>0) {

                                                // Assign the data to the FilterResults
                                                filterResults.values = contractArrayList;
                                                filterResults.count = contractArrayList.size();
                                            }
                                        }
                                        return filterResults;
                                    }

                                    @Override
                                    protected void publishResults(CharSequence constraint, FilterResults results) {
                                        if (results != null && results.count > 0) {
                                            resultList = ( ArrayList<PrimaryContract>) results.values;
                                            notifyDataSetChanged();
                                        } else {
                                            notifyDataSetInvalidated();
                                        }
                                    }};
                                return filter;
                            }



                        private  void findData(Context context, String bookTitle) {
            // this finddata() for getting response from REST API using retrofit 
                                   contractArrayList = new ArrayList<>();
                                String url = "http://se.com/publisher_api/primaryContracts?keyword=";
                                url = url + bookTitle;

                                ApiRequestResponse apiRequestResponse = new ApiRequestResponse();
                                final OnResponseReceiveEvent onResponseReceiveEvent = new OnResponseReceiveEvent() {
                                    @Override
                                    public void getSuccess(Object obj) {
                                        if (obj != null) {
                                            createNoteModel = (CreateNoteModel) obj;
                                            if (createNoteModel.getPrimaryContracts() != null && createNoteModel.getPrimaryContracts().size()>0){
                                                if (contractArrayList != null) {
                                                    contractArrayList.clear();
                                                    contractArrayList = createNoteModel.getPrimaryContracts();
                                                }
                                            }




                                        }
                                        notifyDataSetChanged();

                                    }
                        // I have followed as I given two links
                                    @Override
                                    public Object getFailure() {
                                        return null;
                                    }
                                };
                                apiRequestResponse.getDropDownData(onResponseReceiveEvent, url);

                            }
                        }

共 (0) 个答案