2014-04-01 3 views
0

그냥 연락처 목록을 저장하고 데이터를 필터로 가져 오지 않으며, 사용자가 autocompletetextview에 입력 한 데이터를 가져 오는 앱을 만듭니다. 그것은 listview와 일치하고 결과를 제공하지만,이 코드에서 m은 listview 전체를 돌려받는 것입니다 ... 그것을 비교하고, 결과 데이터만을 표시합니다 ... ?? 몇 가지 단서와 함께 저를 제안하십시오. MainActivity결과를 얻지 못하고 결과를 얻지 못했습니다. 목록보기

public class MainActivity extends Activity implements OnItemClickListener, 
      OnItemSelectedListener { 
     SearchView mSearchView; 
     AutoCompleteTextView searchText; 
     ArrayList<String> name1 = new ArrayList<String>(); 
     ArrayList<String> phno1 = new ArrayList<String>(); 
     ArrayList<String> phno0 = new ArrayList<String>(); 

     MyAdapter ma; 


     String[] cellArray = null; 


     String contacts; 


     ListView lv; 

     String phoneNumber, name; 

     StringBuilder b = new StringBuilder(); 

     List<String> arrayListNames; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      getAllCallLogs(this.getContentResolver()); 
      searchText = (AutoCompleteTextView) findViewById(R.id.autocomplete); 

      lv = (ListView) findViewById(R.id.lv); 

      ma = new MyAdapter(); 

      searchText.setThreshold(1); 
      searchText.setAdapter(ma); 

      lv.setAdapter(ma); 
      lv.setOnItemClickListener(this); 
      lv.setItemsCanFocus(false); 
      lv.setTextFilterEnabled(true); 





     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 

      // TODO Auto-generated method stub 
      getMenuInflater().inflate(R.menu.contact_main, menu); 
      MenuItem searchItem = menu.findItem(R.id.action_search); 

      return true; 

     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      // TODO Auto-generated method stub 

      switch (item.getItemId()) { 

      case android.R.id.home: 
       StringBuilder checkedcontacts = new StringBuilder(); 
       System.out.println(".............." + ma.mCheckStates.size()); 
       for (int i = 0; i < name1.size(); i++) 

       { 
        if (ma.mCheckStates.get(i) == true) { 
         // phno0.add(name1.get(i).toString()); 
         phno0.add(phno1.get(i).toString()); 
         checkedcontacts.append(name1.get(i).toString()); 
         checkedcontacts.append("\n"); 

        } else { 
         System.out.println("..Not Checked......" 
           + name1.get(i).toString()); 
        } 

       } 

       Intent returnIntent = new Intent(); 
       returnIntent.putStringArrayListExtra("name", phno0); 
       setResult(RESULT_OK, returnIntent); 

       finish(); 

       break; 


      case R.id.action_search: 

       searchText.setVisibility(View.VISIBLE); 
       //String text_To_search= searchText.getText().toString().trim(); 
       searchText.addTextChangedListener(new TextWatcher() { 

        public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub 
         //System.out.println(".............." + ma.mCheckStates.size()); 
         for(int i=0;i<name1.size();i++){ 

         if(searchText.getText().toString().trim().equals(name1.get(i).toString())) 

         ma.getFilter().filter(s); 
          /* //Toast.makeText(getApplication(), name1.get(i), Toast.LENGTH_LONG).show(); 
          phno2.add(name1.get(i) + phno1.get(i));*/ 
         } 
         //lv.setAdapter(ma); 

        } 

        @Override 
        public void afterTextChanged(Editable s) { 
         // TODO Auto-generated method stub 

        } 

        @Override 
        public void beforeTextChanged(CharSequence s, int start, 
          int count, int after) { 
         // TODO Auto-generated method stub 

        } 

       }); 

       break; 
      } 
      return super.onOptionsItemSelected(item); 
     } 



     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, 
       int position, long id) { 
      // TODO Auto-generated method stub 



       ma.toggle(position); 

    // 
     } 

     public void getAllCallLogs(ContentResolver cr) { 
      mPeopleList.clear(); 
      Cursor phones = cr.query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, 
        null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME 
          + " ASC"); 
      while (phones.moveToNext()) { 
       phoneNumber = phones 
         .getString(phones 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       name = phones 
         .getString(phones 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 

       System.out.println(phoneNumber); 

       name1.add(name); 
       phno1.add(phoneNumber); 


      } 

      phones.close(); 

     } 

     class MyAdapter extends BaseAdapter implements Filterable, 
       CompoundButton.OnCheckedChangeListener { 
      public SparseBooleanArray mCheckStates; 
      // public ListFilter listFilter; 
      LayoutInflater mInflater; 
      TextView tv1, tv; 
      CheckBox cb; 

      MyAdapter() { 
       mCheckStates = new SparseBooleanArray(name1.size()); 
       mInflater = (LayoutInflater) MainActivity.this 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      } 









      @Override 
      public View getView(final int position, View convertView, 
        ViewGroup parent) { 
       // TODO Auto-generated method stub 
       View vi = convertView; 
       if (convertView == null) 
        vi = mInflater.inflate(R.layout.row, null); 
       tv = (TextView) vi.findViewById(R.id.textView1); 
       tv1 = (TextView) vi.findViewById(R.id.textView2); 
       cb = (CheckBox) vi.findViewById(R.id.checkBox1); 
       tv.setText(name1.get(position)); 
       tv1.setText(phno1.get(position)); 
       cb.setTag(position); 

       cb.setChecked(mCheckStates.get(position, false)); 
       cb.setOnCheckedChangeListener(this); 

       return vi; 

      } 

      public boolean isChecked(int position) { 

       return mCheckStates.get(position, false); 
      } 

      public void setChecked(int position, boolean isChecked) { 
       mCheckStates.put(position, isChecked); 
      } 

      public void toggle(int position) { 
       setChecked(position, !isChecked(position)); 
      } 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, 
        boolean isChecked) { 
       // TODO Auto-generated method stub 
       mCheckStates.put((Integer) buttonView.getTag(), isChecked); 

      } 



      @Override 
      public Filter getFilter() { 
       // TODO Auto-generated method stub 
       Filter filter = new Filter() { 

        @SuppressWarnings("unchecked") 
        @Override 
        protected void publishResults(CharSequence constraint, FilterResults results) { 

         arrayListNames = (List<String>) results.values; 
         notifyDataSetChanged(); 
        } 

        @Override 
        protected FilterResults performFiltering(CharSequence constraint) { 

         FilterResults results = new FilterResults(); 
         ArrayList<String> FilteredArrayNames = new ArrayList<String>(); 

         // perform your search here using the searchConstraint String. 

         constraint = searchText.getText().toString().toLowerCase(); 
         for (int i = 0; i < name1.size(); i++) { 
          String dataNames = name1.get(i); 
          if (dataNames.toLowerCase().startsWith(constraint.toString())) { 
           FilteredArrayNames.add(dataNames); 
          } 
         } 

         results.count = FilteredArrayNames.size(); 
         results.values = FilteredArrayNames; 
         //Log.e("VALUES", results.values.toString()); 

         return results; 
        } 
       }; 

       return filter; 
      } 
     } 
      } 

답변

관련 문제