1

私はAndroidの初心者です。SQLite データベースから AutoCompleteTextView に値を入力しようとしたときに問題が発生しました。関数getAllFnames()を介して、データベースから文字列配列に値を取得しました[*以下に表示*]。しかし、AutoCompleteTextView は実行時に提案を表示しません..誰か助けてください.コードを以下に示します..確認してください..ありがとうございます..(Log Cat はいくつかのフィルタリングの問題を示しています!)

 public String[] getAllFnames() {

     database=open();
     Fname=new String[1000];
     int i=0;
Cursor cursor = database.query(DbCreation.PATIENT_TABLE,Columns, null, null, null, null, null);
          cursor.moveToFirst();
          while (!cursor.isAfterLast()) {
          Fname[i]=cursor.getString(1).toString();
          Log.v("DataBaseValues...", Fname[i]);
          cursor.moveToNext();
          i++;
        }

        // Make sure to close the cursor
        cursor.close();
        return Fname;
}

テキストビュー側

      Fname=ss.getAllFnames();//here Fname is a string array
             //"ss" is the object of class where method getAllFname()  is placed.
ArrayAdapter<String> fnameAdapter=new ArrayAdapter<String>(this,R.layout.list,Fname);

     fnameSearch.setThreshold(1);//fnameSearch is the AutoCompleteTextView

     fnameSearch.setAdapter(fnameAdapter);

     fnameSearch.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
4

4 に答える 4

0

メソッド getAllFnames() を次のように変更しました

   public String[] getAllFnames() {

     database=open();


         Cursor cursor = database.query(DbCreation.PATIENT_TABLE,Columns, null, null, null, null, null);
         if(cursor.getCount() >0){
             String []  Fname=new String[cursor.getCount()];
             int i=0;
            while (cursor.moveToNext()) {

           Fname[i]=cursor.getString(0).toString();//+" "+cursor.getString(1).toString();
          Log.v("DataBaseValues...", Fname[i]);

          i++;
        }
        // Make sure to close the cursor
        cursor.close();
        return Fname;
         }
         else return new String[] {};
  }

     String [] Fname=ss.getAllFnames();

      int i=0;
      Log.v("insidichSearchAct..", Fname[i]);

     ArrayAdapter<String> fnameAdapter=new ArrayAdapter<String>(this,R.layout.fname_search_list,Fname);
     fnameSearch.setThreshold(1);
     fnameSearch.setAdapter(fnameAdapter);

次に、AutoCompleteTextView への提案値を取得しました すべての専門家に感謝します...

于 2012-12-06T16:00:04.313 に答える
0

ここで目にする唯一の問題は (DB から値を取得していると仮定して) です。

ArrayAdapter<String> fnameAdapter=new ArrayAdapter<String>(this,R.layout.list,Fname);

で置き換えます

myAutoComplete.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, Fname));
于 2012-12-05T12:20:48.027 に答える
0

このコードを試してください。Months 配列の代わりにデータの配列を使用します。むしろ、サイズ 1000 の配列の代わりに arraylist を使用します。より効率的です。

public class autocomplete extends Activity {

 static final String[] Months = new String[]{
    "January","February","March","April","May","June","July","August",
    "September","October","November","December"
    };

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

    setContentView(R.layout.autocomplete);

    ArrayAdapter<String> monthArray = new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line, Months);


    final AutoCompleteTextView textView = (AutoCompleteTextView)findViewById(R.id.testAutoComplete);
            textView.setAdapter(monthArray);

   }

}
于 2012-12-05T12:17:36.347 に答える
0

あなたはこれを使います

ArrayAdapter<String> fnameAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line, Fname);

これを試して。ありがとう。

于 2012-12-05T12:17:49.163 に答える