我想使用自动完成功能创建一个带有eclipse的Android应用程序并显示带有解释页面的结果。这是我的第一次尝试。我仍然是这样的人,非常需要帮助!
我从codeofninja.com(https://www.codeofaninja.com/2013/11/android-autocompletetextview-example-sqlite-database.html)
获取示例源代码这个项目包含5个java文件和1个xml文件;
activity_main.xml,MainActivity.java,CustomAutoCompleteView.java,DatabaseHandler.java,CustomAutoCompleteTextChangedListener.java,MyObject.java
我的问题是如何根据此示例源创建代码以显示结果。我的意思是,当我们搜索" Cofee"然后结果出现了,我们可以触摸" Cofee"并获得有关它的信息,如移动应用程序上的字典。
谢谢!
这个MainActivity.Java的源代码:
package com.example.autocompletetextviewdb;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
public class MainActivity extends Activity {
/*
* Change to type CustomAutoCompleteView instead of AutoCompleteTextView
* since we are extending to customize the view and disable filter
* The same with the XML view, type will be CustomAutoCompleteView
*/
CustomAutoCompleteView myAutoComplete;
// adapter for auto-complete
ArrayAdapter<String> myAdapter;
// for database operations
DatabaseHandler databaseH;
// just to add some initial value
String[] item = new String[] {"Please search..."};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
// instantiate database handler
databaseH = new DatabaseHandler(MainActivity.this);
// put sample data to database
insertSampleData();
// autocompletetextview is in activity_main.xml
myAutoComplete = (CustomAutoCompleteView) findViewById(R.id.myautocomplete);
// add the listener so it will tries to suggest while the user types
myAutoComplete.addTextChangedListener(new CustomAutoCompleteTextChangedListener(this));
// set our adapter
myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, item);
myAutoComplete.setAdapter(myAdapter);
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public void insertSampleData(){
// CREATE
databaseH.create( new MyObject("January") );
databaseH.create( new MyObject("February") );
databaseH.create( new MyObject("March") );
databaseH.create( new MyObject("April") );
databaseH.create( new MyObject("May") );
databaseH.create( new MyObject("June") );
databaseH.create( new MyObject("July") );
databaseH.create( new MyObject("August") );
databaseH.create( new MyObject("September") );
databaseH.create( new MyObject("October") );
databaseH.create( new MyObject("November") );
databaseH.create( new MyObject("December") );
databaseH.create( new MyObject("New Caledonia") );
databaseH.create( new MyObject("New Zealand") );
databaseH.create( new MyObject("Papua New Guinea") );
databaseH.create( new MyObject("COFFEE-1K") );
databaseH.create( new MyObject("coffee raw") );
databaseH.create( new MyObject("authentic COFFEE") );
databaseH.create( new MyObject("k12-coffee") );
databaseH.create( new MyObject("view coffee") );
databaseH.create( new MyObject("Indian-coffee-two") );
}
// this function is used in CustomAutoCompleteTextChangedListener.java
public String[] getItemsFromDb(String searchTerm){
// add items on the array dynamically
List<MyObject> products = databaseH.read(searchTerm);
int rowCount = products.size();
String[] item = new String[rowCount];
int x = 0;
for (MyObject record : products) {
item[x] = record.objectName;
x++;
}
return item;
}
}
答案 0 :(得分:0)
如果您要处理用户从下拉列表中选择其中一个建议而产生的点击,则必须使用以下内容:
actextView.setOnItemSelectedListener(new OnItemClickListener() {
@Override
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
//... your stuff
}
});