Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android无法单击AutoCompleteTextView下拉列表项_Android_Autocompletetextview - Fatal编程技术网

android无法单击AutoCompleteTextView下拉列表项

android无法单击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

我有一个简单的自动完成文本视图,我试图动态访问google位置名称,当我在dropdownlist中获得名称时,我无法单击/选择该下拉项

这是我的AutoMLETextView

        <?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);
        }