2016-01-28 43 views
1

添加數據我有一個AutoCompleteTextView當我靜態定義我的字符串這樣的工作正常..AutoCompleteTextView不能正常工作從數據庫

private String Names[] = {"Hassan", "Usman", "Kristen Stewart"}; 

那麼我這樣做..

ArrayAdapter<String> adapter = new ArrayAdapter<String> 
      (this, android.R.layout.select_dialog_item, Names); 
    //Getting the instance of AutoCompleteTextView 

    catgNames.setThreshold(0);//will start working from 0 character 
    catgNames.setAdapter(adapter);//setting the adapter data into the AutoCompleteTextView 

當我嘗試從加載一些數據Sqlite,下拉蘇通氣不起作用。我在做這樣的事情..

Categories = new String[100] 
    int i =0; 
    DatabaseHandler db = new DatabaseHandler(this); 
    List<entries> entries1 = db.getCategories(); 
    for (entries cn : entries1) { 
     Log.i("", cn.getCategories()); 

     Names[i] = cn.getCategories(); 
     i++; 
    } 

並在此之後,我定義的適配器..

ArrayAdapter<String> adapter = new ArrayAdapter<String> 
      (this, android.R.layout.select_dialog_item, Names); 
    //Getting the instance of AutoCompleteTextView 

    catgNames.setThreshold(0);//will start working from 0 character 
    catgNames.setAdapter(adapter);//setting the adapter data into the AutoCompleteTextView 

這是行不通的。沒有任何錯誤或登錄貓警告..

+0

檢查的解決方案是它分貝數據無濟於事或不。 – HassanUsman

+0

我做了..它在那裏..如果那會是這種情況,那麼我會很容易解決它。 –

+0

檢查我的答案 – HassanUsman

回答

0

我已經解決了這個問題..

下面是我在做錯誤..

Categories = new String[100] 

這將創造我沒有使用完全大小爲100的數組。

現在..

DatabaseHandler db = new DatabaseHandler(this); 
List<entries> entries1 = db.getCategories(); 
for (entries cn : entries1) { 
    Log.i("", cn.getCategories()); 

    Names[i] = cn.getCategories(); 
    i++; 
} 

這個代碼僅把它是數據庫內的值的其餘部分仍是名數組中的空值。

由於這種autocompletetextview而不能正常工作..

這裏是我如何解決它..

int i=0; 
    DatabaseHandler db = new DatabaseHandler(this); 
    List<entries> entries1 = db.getCategories(); 
    for (entries cn : entries1) { 
     i++; 
    } 
    Names = new String[i]; 
    int j=0; 
    List<entries> entries3 = db.getCategories(); 
    for (entries cn : entries3) { 
     Names[j] = cn.getCategories(); 
     j++; 
    } 

發現從這個link

0

試試這個:

String[] Categories =[entries1.size]; 


int i =0; 
    DatabaseHandler db = new DatabaseHandler(this); 
    List<entries> entries1 = db.getCategories(); 
    for (entries cn : entries1) { 
     Log.i("", cn.getCategories()); 

    Categories[i] = cn.getCategories(); 
    i++; 
} 

更改您的基準值:

catgNames.setThreshold(0); 

這樣。

catgNames.setThreshold(1); 

希望它有效。

+0

這沒有奏效..對不起 –

+0

現在嘗試我的代碼。 – HassanUsman

0

我想知道爲什麼當你將值添加到Names []中時,你會在ArrayAdapter中傳遞Categories?它應該是,而不是在你的ArrayAdapter「分類」「名」,像

ArrayAdapter<String> adapter = new ArrayAdapter<String> 
     (this, android.R.layout.select_dialog_item, Names); 

或者你可以創建一個列表,添加所有的數據庫列值,並通過他們在ArrayAdapter。希望能幫助到你!

+0

或者您可以創建一個*列表,添加所有的db列值並將它傳遞到ArrayAdapter中。 –

+0

我編輯了代碼..我在提問時犯了一個錯誤 –

+0

您嘗試了第二種解決方案嗎? –