【发布时间】:2017-07-19 07:50:03
【问题描述】:
我正在我的应用程序中集成可搜索微调器。下面是我的代码
gradle 文件
compile 'com.toptoche.searchablespinner:searchablespinnerlibrary:1.3.1'
Xml 文件
<com.toptoche.searchablespinnerlibrary.SearchableSpinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:hintText="Select Country"/>
Man.java
public class MainActivity extends AppCompatActivity {
SearchableSpinner mSearchableSpinner;
ArrayList<GetCountry> mGetCountries;
PriorityAdapter mPriorityAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSearchableSpinner = (SearchableSpinner) findViewById(R.id.spinner);
mGetCountries = new ArrayList<>();
GetCountry mGetCountry = new GetCountry();
mGetCountry.setId("1");
mGetCountry.setName("India");
mGetCountries.add(mGetCountry);
GetCountry mGetCountry2 = new GetCountry();
mGetCountry2.setId("2");
mGetCountry2.setName("USA");
mGetCountries.add(mGetCountry2);
GetCountry mGetCountry3 = new GetCountry();
mGetCountry3.setId("3");
mGetCountry3.setName("UK");
mGetCountries.add(mGetCountry3);
GetCountry mGetCountry4 = new GetCountry();
mGetCountry4.setId("4");
mGetCountry4.setName("CHINE");
mGetCountries.add(mGetCountry4);
GetCountry mGetCountry5 = new GetCountry();
mGetCountry5.setId("5");
mGetCountry5.setName("MALASIYA");
mGetCountries.add(mGetCountry5);
mPriorityAdapter=new PriorityAdapter(mGetCountries);
mSearchableSpinner.setAdapter(mPriorityAdapter);
}
public class PriorityAdapter extends ArrayAdapter<GetCountry> {
ArrayList<GetCountry> list;
public PriorityAdapter(ArrayList<GetCountry> list) {
super(MainActivity.this, R.layout.spin_layout, list);
this.list = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) { // Ordinary
return initView(position, convertView, parent);
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) { // This view starts when we click the
// spinner.
return initView(position, convertView, parent);
}
public View initView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflator = getLayoutInflater();
convertView = inflator.inflate(R.layout.spin_layout, null);
TextView mTextView = (TextView) convertView
.findViewById(android.R.id.text1);
mTextView.setText(list.get(position).getName());
return convertView;
}
}
}
当我运行上面的代码时,我得到如下图所示的输出。自定义arraylist数据不显示它是打印java每个项目的垃圾值 Spinner Output
知道如何解决这个问题吗?
编辑
public class PriorityAdapter extends ArrayAdapter<GetCountry> {
ArrayList<GetCountry> list;
public PriorityAdapter(ArrayList<GetCountry> list) {
super(MainActivity.this, R.layout.spin_layout, list);
this.list = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) { // Ordinary
return initView(position, convertView, parent);
}
@Nullable
@Override
public GetCountry getItem(int position) {
return super.getItem(position);
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) { // This view starts when we click the
View view = convertView;
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
view = layoutInflater.inflate(R.layout.spin_layout_1, parent, false);
TextView tv= (TextView) view.findViewById(R.id.text1);
tv.setText(list.get(position).getName());
return view;
}
public View initView(int position, View convertView, ViewGroup parent) {
View view = convertView;
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
view = layoutInflater.inflate(R.layout.spin_layout_1, parent, false);
TextView tv= (TextView) view.findViewById(R.id.text1);
tv.setText(list.get(position).getName());
return view;
}
}
GetCountry.java
public class GetCountry {
String name;
String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
【问题讨论】:
-
我遇到了同样的问题,我唯一可以补充的是 DropDownView 并没有真正考虑在内,而是你的班级的 .toString() 。我不知道为什么,但似乎 SpinnerSearchable 没有正确使用适配器。或者我们可能遗漏了一些东西。希望有人能提供帮助。干杯
-
如何解决这个问题?我也遇到同样的问题?
-
@harshal 你是怎么解决这个问题的?
标签: android spinner android-arrayadapter android-spinner