android无法单击AutoCompleteTextView下拉列表项
我有一个简单的自动完成文本视图,我试图动态访问google位置名称,当我在dropdownlist中获得名称时,我无法单击/选择该下拉项 这是我的AutoMLETextViewandroid无法单击AutoCompleteTextView下拉列表项,android,autocompletetextview,Android,Autocompletetextview,我有一个简单的自动完成文本视图,我试图动态访问google位置名称,当我在dropdownlist中获得名称时,我无法单击/选择该下拉项 这是我的AutoMLETextView <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/match_p
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/match_parent" >
<AutoCompleteTextView
android:id="@+id/demo_google_address_search"
style="@style/match_width"
android:ems="10"
android:hint=" Enter Keywords" >
<requestFocus />
</AutoCompleteTextView>
</FrameLayout>
这是一项活动:
package com.ktb.gopharma.maps;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.os.Bundle;
import android.widget.AutoCompleteTextView;
import com.ktb.gopharma.R;
import com.ktb.gopharma.adapters.LocationAutoCompleteAdaptor;
public class DemoGoogleMapSearching extends Activity
{
ArrayList<Address> addresses;
AutoCompleteTextView addressAutoComplete;
String characters="";
LocationAutoCompleteAdaptor locationAutoCompleteadapter;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.demo_auto_complete);
context=getApplicationContext();
addressAutoComplete=(AutoCompleteTextView) findViewById(R.id.demo_google_address_search);
addresses=new ArrayList<>();
locationAutoCompleteadapter=new LocationAutoCompleteAdaptor(context, android.R.layout.simple_dropdown_item_1line,addresses);
addressAutoComplete.setAdapter(locationAutoCompleteadapter);
}
}
package com.ktb.gopharma.maps;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.content.Context;
导入android.location.Address;
导入android.os.Bundle;
导入android.widget.AutoCompleteTextView;
进口com.ktb.gopharma.R;
导入com.ktb.gopharma.adapters.LocationAutoCompleteAdaptor;
公共类DemoGoogleMapSearching扩展了活动
{
数组列表地址;
自动完成文本视图地址自动完成;
字符串=”;
位置自动完成适配器位置自动完成适配器;
语境;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.demo\u auto\u complete);
context=getApplicationContext();
addressAutoComplete=(AutoCompleteTextView)findViewById(R.id.demo\u google\u address\u search);
地址=新的ArrayList();
locationAutoCompleteadapter=新的locationAutoCompleteadapter(上下文、android.R.layout.simple\u下拉列表\u项目线、地址);
addressAutoComplete.setAdapter(locationAutoCompleteadapter);
}
}
这是一个适配器:
package com.ktb.gopharma.adapters;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.content.Context;
import android.location.Address;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
import com.ktb.gopharma.R;
import com.ktb.gopharma.utilities.GoogleMapUtilities;
public class LocationAutoCompleteAdaptor extends ArrayAdapter<Address> implements Filterable {
private ArrayList<Address> addressList;
LayoutInflater inflater;
Context context;
public LocationAutoCompleteAdaptor(Context context, int resource,ArrayList<Address> addresses)
{
super(context, resource);
this.addressList = addresses;
inflater = LayoutInflater.from(context);
this.context = context;
}
@SuppressLint({ "SimpleDateFormat", "ResourceAsColor" })
public View getView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null)
{
view = inflater.inflate(R.layout.address_autocomplete_list_item,parent, false);
}
Address address = addressList.get(position);
try {
((TextView) view.getTag(R.id.title)).setText(address.getFeatureName());
}
catch (Exception e) {
((TextView) view.getTag(R.id.title)).setText("No More Data");
}
return view;
}
public int getCount()
{
if (addressList != null)
return addressList.size();
return 0;
}
public Address getItem(int position)
{
return null;
}
public long getItemId(int position)
{
return 0;
}
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint)
{
FilterResults filterResults = new FilterResults();
if (constraint != null)
{
Geocoder geocoder=new Geocoder(context,Locale.getDefault());
// Retrieve the autocomplete results.
ArrayList<Address> searchData = new ArrayList<>();
try {
searchData= (ArrayList<Address>) geocoder.getFromLocationName(constraint.toString(), 10);
}
catch (IOException e) {
e.printStackTrace();
}
if(searchData!=null && !searchData.isEmpty())
{
addressList = searchData;
// Assign the data to the FilterResults
filterResults.values = addressList;
filterResults.count = addressList.size();
}
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint,FilterResults results)
{
if (results != null && results.count > 0)
notifyDataSetChanged();
else
notifyDataSetInvalidated();
}
};
return filter;
}
}
package com.ktb.gopharma.adapters;
导入java.util.ArrayList;
导入android.annotation.SuppressLint;
导入android.content.Context;
导入android.location.Address;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.Filter;
导入android.widget.Filterable;
导入android.widget.TextView;
进口com.ktb.gopharma.R;
导入com.ktb.gopharma.utilities.GoogleMapUtilities;
公共类LocationAutoCompleteAdapter扩展ArrayAdapter实现可过滤{
私有ArrayList地址列表;
充气机;
语境;
public LocationAutoCompleteAdaptor(上下文、int资源、ArrayList地址)
{
超级(上下文、资源);
this.addressList=地址;
充气器=充气器。从(上下文);
this.context=上下文;
}
@SuppressLint({“SimpleDataFormat”,“ResourceAsColor”})
公共视图getView(int位置、视图转换视图、视图组父视图)
{
视图=转换视图;
如果(视图==null)
{
视图=充气机。充气(R.layout.address\u autocomplete\u list\u项,父项,false);
}
地址=地址列表。获取(位置);
试一试{
((TextView)view.getTag(R.id.title)).setText(address.getFeatureName());
}
捕获(例外e){
((TextView)view.getTag(R.id.title)).setText(“无更多数据”);
}
返回视图;
}
public int getCount()
{
如果(地址列表!=null)
返回addressList.size();
返回0;
}
公共广播getItem(内部位置)
{
返回null;
}
公共长getItemId(int位置)
{
返回0;
}
@凌驾
公共过滤器getFilter(){
过滤器过滤器=新过滤器(){
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束)
{
FilterResults FilterResults=新的FilterResults();
if(约束!=null)
{
Geocoder Geocoder=新的地理编码器(上下文,Locale.getDefault());
//检索自动完成结果。
ArrayList searchData=新建ArrayList();
试一试{
searchData=(ArrayList)geocoder.getFromLocationName(constraint.toString(),10);
}
捕获(IOE异常){
e、 printStackTrace();
}
if(searchData!=null&&!searchData.isEmpty())
{
地址列表=搜索数据;
//将数据分配给FilterResults
filterResults.values=地址列表;
filterResults.count=addressList.size();
}
}
返回过滤器结果;
}
@凌驾
受保护的void publishResults(CharSequence约束、FilterResults结果)
{
if(results!=null&&results.count>0)
notifyDataSetChanged();
其他的
notifyDataSetionValidated();
}
};
回流过滤器;
}
}
这是一个下拉项:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp"
android:background="@drawable/rounded_corners" >
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="no messages"
android:textColor="@color/black"
android:textSize="16sp" />
</LinearLayout>
public long getItemId(int position)
{
return 0;
}
public Address getItem(int position)
{
return addressList.get(position);
}