2013-01-31 52 views
0

我正在開發一個android應用程序,在該應用程序中,我從SQLite數據庫表中檢索某些數據(所有村莊村名)。我通過字符串數組返回了這個。代碼是返回字符串數組並在AutoCompleteTextview上使用它

public String[] getAllVillage() 
{ 
    String[] villagelist=new String[2000]; 
    int i=0; 
    Cursor c=sqLiteDatabase.rawQuery("SELECT * FROM " + MYDATABASE_TABLE2 ,null); 
    if (c.moveToFirst()) 
    { 
     do 
     { 
      villagelist[i]=c.getString(1); 
      i++; 
     }while(c.moveToNext()); 
    } 
    c.close(); 
    return villagelist; 
} 

,並在我的Android應用程序,我通過這個數組AutoCompleteTextview如下:

private SQLiteAdapterv vadapter; 
String[] village=new String[2000]; 
String newone[] = new String[2000]; 
village=vadapter.getAllVillage(); 
for(int h=0;h<2000;h++) 
{ 
newone[h]=village[h]; 
} 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,newone); 
    final AutoCompleteTextView acTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1); 

    acTextView.setThreshold(0); 
    acTextView.setAdapter(adapter); 
    acTextView.addTextChangedListener(this); 

但代碼沒有任何影響,這意味着,當我點擊AutocompleteTextview,也不會顯示任何村名。我的方法是正確的嗎?如果沒有,那麼幫助我做到這一點

+0

你設置斷點,並通過您的代碼看?你知道你的查詢是否填滿了'鄉村列表'嗎? – 2013-01-31 12:48:09

+0

不,我沒有檢查斷點。我的程序是正確的嗎?我的意思是返回字符串數組並執行它 –

+0

檢查[this](http://www.mysamplecode.com/2011/10/android-autocompletetextview.html)。他們似乎在做你想做的事。但是我會先放置斷點以確保首先獲取數據。 – 2013-01-31 12:56:32

回答

2

首先,在你的代碼的問題是

String[] village=new String[2000];// assigning large size 
String newone[] = new String[2000]; 

的原因是假設,如果只有1000條記錄出現在你的數據庫。這兩個字符串數組包含1000個結果和空值直到剩下的值。你可以通過斷點檢查。自動完成Textview不支持這種格式。

所以,你應該在你的代碼中的一些變化

int count; 
count=vadapter.getCount(); 
String[] village=new String[count]; 
village=vadapter.getAllVillage(); 

然後你就可以直接使用在村作爲setAdapter

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,village); 
1

ArrayAdapter適配器=新 ArrayAdapter(這一點,android.R.layout.simple_dropdown_item_1line,newone);

替換爲此;

ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,village);

+0

沒有看第二個參數在構造函數 – 2013-01-31 13:03:32

+0

它不工作.. –

+0

你有沒有突破它? 「村莊」或「新人」中是否有任何元素?如果他們包含你的村莊,那麼你知道問題出現在你的代碼中,如果沒有,那麼你需要修復你的查詢。 (int h = 0; h 2013-01-31 13:11:06

0

試試這個:

acTextView.setThreshold(1); 

acTextView.addTextChangedListener(this); 

acTextView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, newone)); 
相關問題