1

我正在开发自动完成文本视图,并且我使用了从使用的网络服务进行的搜索。但我的问题是自动完成文本视图设置列表视图,但我看不到列表视图已更新。如何可能。下面的代码>请帮助我!!!

public class AddUserListActivity extends Activity{

//  private SimpleSectionAdapter<String> sectionAdapter;
    ListView listUser;
    private List<String> lastName = new ArrayList<String>();
    DtoUserDetail mApplication;
    ArrayList<DtoUserList> ListArray;
    private UserListAdapter objAdapter; 
    Button AddFriends;
    DbServices Dbs = new DbServices();
    Button btnBackAddUser;
    Button btnAddFriends;
    Button btnBackToMain;
    RelativeLayout searchBar;
    Button btnSearchSend;
    AutoCompleteTextView editSearchText;
    ArrayList<DtoSearchUser> searchUserList;
    boolean searchStatus = false;
    List<String> searchUserNameList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
         setContentView(R.layout.add_user_list);

        listUser = (ListView)findViewById(R.id.listView);
        mApplication = (DtoUserDetail)AddUserListActivity.this.getApplicationContext();
        btnBackToMain = (Button)findViewById(R.id.btnBackFromAddFriends);
        searchBar = (RelativeLayout)findViewById(R.id.searchbar);
        btnSearchSend = (Button)findViewById(R.id.btnSearchSend);
        editSearchText =(AutoCompleteTextView)findViewById(R.id.editSearchText);

      // objAdapter.notifyDataSetChanged();

        btnSearchSend.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                searchUserList = new ArrayList<DtoSearchUser>();        
                searchUserNameList = new ArrayList<String>();

                Log.v("adduserlist", "searchtext:" + editSearchText.getText().toString());

                searchUserList = new DbServices().SendSearchText(editSearchText.getText().toString(),mApplication.getUserid()+"");


                for(int i=0;i<searchUserList.size();i++)
                {
                    searchUserNameList.add(searchUserList.get(i).getUsers());
                }

                    Log.v("log", " search list userName  " + searchUserNameList);

                 ArrayAdapter<String> adapter = new ArrayAdapter<String>(AddUserListActivity.this, android.R.layout.simple_dropdown_item_1line, searchUserNameList);
                 editSearchText.setAdapter(adapter);

            }
        });

       editSearchText.setOnItemClickListener(new OnItemClickListener() {

           @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
                    long arg3) {
                // TODO Auto-generated method stub

                    Log.v("log"," position in autocomplete " + pos);
                    String toUserId = searchUserList.get(pos).getUserid()+"";
                    Log.v("log"," autocomplete USERID " + searchUserList.get(pos).getUserid() + " " + searchUserList.get(pos).getLast_name());

                    String status= Dbs.addFriends(mApplication.getUserid()+"",toUserId);
                    Toast.makeText(AddUserListActivity.this, "ToUserId :  " +toUserId + " status"+  status , Toast.LENGTH_LONG).show();

                }      
           });

       btnAddFriends=(Button)findViewById(R.id.btnAddFriends);
       btnAddFriends.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            if(searchStatus==false)
            {
              searchBar.setVisibility(View.VISIBLE);
              searchStatus = true;
            }
            else
            {
                searchBar.setVisibility(View.GONE);
                searchStatus = false;
            }
            }
        });

      btnBackToMain.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            AddUserListActivity.this.finish();

        }
     });


         if (isNetworkAvailable()) {
            new MyTask().execute();
        } else {
            showToast("No Netwrok Connection!!!");
            //this.finish();
        }

    }       
        class MyTask extends AsyncTask<Void, Void, Void> {

            ProgressDialog pDialog;

            @Override
            protected void onPreExecute() {
                pDialog = new ProgressDialog(AddUserListActivity.this);
                pDialog.setMessage("Loading...");
                pDialog.show();
                super.onPreExecute();
            }

            @Override
            protected Void doInBackground(Void... params) {
            //  ListArray = new DbServices().GetUserList(""+mApplication.getUserid());
                ListArray = new DbServices().GetFriendsList(""+mApplication.getUserid());
                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                if (null != pDialog && pDialog.isShowing()) {
                    pDialog.dismiss();
                }

                if (null == ListArray || ListArray.size() == 0) {
                    showToast("No data found from web!!!");
                //  AddUserListActivity.this.finish();
                } else {
                    setAdapterToListview();
                }

                super.onPostExecute(result);
            }
        }

   // setAdapter 
        public void setAdapterToListview() {

            for(int i=0;i<ListArray.size();i++)
            {
                lastName.add(ListArray.get(i).getLast_name());
            }

            for(int j=0;j<SortingArraylist(ListArray).size();j++)
            {

            }




            objAdapter = new UserListAdapter(AddUserListActivity.this,SortingArraylist(ListArray));

            listUser.setAdapter(objAdapter);



            listUser.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View arg1,
                        int position, long id) {


                    Log.v("log"," position of item " + position  + " item first name " + ListArray.get(position).getFirst_name()); 

                    Intent i_options = new Intent(AddUserListActivity.this,friendsHoldActivity.class);
                    i_options.putExtra("pos", ListArray.get(position).getUserid());
                    //startActivity(i_options);
                    startActivity(i_options);

                }
            });
    }   

         class ListSectionizer implements Sectionizer<String> {

            @Override
            public String getSectionTitleForItem(String itemName) {
                return itemName.toUpperCase().substring(0, 1);
            }
        }

        public static Comparator<String> StringComparator = new Comparator<String>() {
            public int compare(String app1, String app2) {

                String stringName1 = app1;
                String stringName2 = app2;

                return stringName1.compareToIgnoreCase(stringName2);
            }
        };

        private List<String> Sorting(List<String> Names) { 
            Collections.sort(Names, StringComparator);
            return Names;
        }

        public static Comparator<DtoUserList> StringArrayComparator = new Comparator<DtoUserList>() {

            public int compare(DtoUserList app1, DtoUserList app2) {

                DtoUserList stringName1 = app1;
                DtoUserList stringName2 = app2;

                return stringName1.getLast_name().compareToIgnoreCase(stringName2.getLast_name());
            }
        };

       private ArrayList<DtoUserList> SortingArraylist(ArrayList<DtoUserList> userDetail){
                  Collections.sort(userDetail ,StringArrayComparator);

           return userDetail;
       }

   // check internet connection 
    public boolean isNetworkAvailable() {
        ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) {
            return false;
        } else {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
                for (int i = 0; i < info.length; i++) {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
 // Toast is here...
    private void showToast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

 }
4

1 回答 1

0

addTextChangedListener应用于editSearchText
中的onTextChanged方法,查看是否在数据库或 arrayList 或任何您拥有的内容中找到匹配的内容.....
例如:arrayList.get(i).toString().toLowerCase().contains(editSearchText.getText( ).toString())

于 2013-05-20T13:42:07.677 回答