Java 如何使用searchManager搜索和筛选listview
我正在使用字符串[]{“item 1”、“item 2”、“item 3”}作为arrayadapter,它将显示在我的ListView中,但现在的问题是我无法为搜索目的进行筛选。大多数在线教程都是经过筛选并从数据库中获取的,但就我而言,我根本不接触数据库,所有这些都只是硬编码的。对不起,我的英语不好,请帮忙:) 代码如下: MainActivity.java:Java 如何使用searchManager搜索和筛选listview,java,android,listview,android-listview,Java,Android,Listview,Android Listview,我正在使用字符串[]{“item 1”、“item 2”、“item 3”}作为arrayadapter,它将显示在我的ListView中,但现在的问题是我无法为搜索目的进行筛选。大多数在线教程都是经过筛选并从数据库中获取的,但就我而言,我根本不接触数据库,所有这些都只是硬编码的。对不起,我的英语不好,请帮忙:) 代码如下: MainActivity.java: String[] values = new String[] { "item 1", "item 2", "item 3" } ;
String[] values = new String[] { "item 1", "item 2", "item 3" } ;
ItemAdapter adapter = new ItemAdapter(this, values);
setListAdapter(adapter);
java代码如下
public class BuildingAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] buildingname;
public BuildingAdapter(Context context, String[] buildingname) {
super(context, R.layout.row_buidling_item, buildingname);
this.context = context;
this.buildingname = buildingname;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.row_buidling_item, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.buildingname);
ImageView imageView = (ImageView) rowView.findViewById(R.id.buildingicon);
TextView hints = (TextView) rowView.findViewById(R.id.buildinghints);
textView.setText(buildingname[position]);
// Change the icon for Windows and iPhone
String s = buildingname[position];
return rowView;
}
//that's all I did, hopefully someone can answer please...
公共类BuildingAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终字符串[]buildingname;
公共BuildingAdapter(上下文,字符串[]buildingname){
super(上下文,R.layout.row\u building\u项目,buildingname);
this.context=上下文;
this.buildingname=buildingname;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图行视图=充气机。充气(R.layout.row\u building\u项目,父项,false);
TextView TextView=(TextView)rowView.findViewById(R.id.buildingname);
ImageView ImageView=(ImageView)rowView.findViewById(R.id.buildingicon);
TextView提示=(TextView)rowView.findViewById(R.id.buildingInts);
setText(buildingname[position]);
//更改Windows和iPhone的图标
字符串s=buildingname[位置];
返回行视图;
}
//这就是我所做的,希望有人能回答请。。。
在活动中创建两个字段
String[] values;
ArrayList<String> filteredValues;
String[]值;
ArrayList FilteredValue;
现在将值分配给适配器,如下所示:
values = new String[]{"item 1", "item 2", "item 3"};
filteredValues = new ArrayList<>(values.length);
for (int i = 0; i < values.length; i++) {
filteredValues.add(values[i]);
}
ItemAdapter adapter = new ItemAdapter(this, values);
setListAdapter(adapter);
values=新字符串[]{“项目1”、“项目2”、“项目3”};
filteredValues=新的ArrayList(values.length);
对于(int i=0;i
现在定义您调用以筛选的筛选方法:
private void filter(String s) {
filteredValues.clear();
for (int i = 0; i < values.length; i++) {
if (TextUtils.isEmpty(s) || values[i].contains(s)) {
filteredValues.add(values[i]);
}
}
//notifyDatasetChange of adapter here;
}
private void过滤器(字符串s){
filteredValues.clear();
对于(int i=0;i 用于ListView的阵列适配器
// ArrayList for Listview
ArrayList<HashMap<String, String>> productList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Listview Data
String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE",
"iPhone 4S", "Samsung Galaxy Note 800",
"Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};
lv = (ListView) findViewById(R.id.list_view);
inputSearch = (EditText) findViewById(R.id.inputSearch);
// Adding items to listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
lv.setAdapter(adapter);
}
最后在AndroidManifest.xml文件中添加以下属性,以隐藏加载活动时的键盘。
android:windowSoftInputMode="stateHidden"
对于那些与我有同样问题的人,我在这里找到了最好的例子:)
看看。。。
希望能有所帮助:)如果我没说错的话,你有2个数组,Array1和Array2,你想得到列表Array1-Array2吗?@RohitJain不,先生,我只有一个数组,就是“buildingname”。谢谢先生:)这确实解决了我的问题,但我现在遇到了另一个问题,很抱歉再次打扰。该项目在listview中显示良好,但我需要在listview中为不同的项目显示不同的照片。我应该怎么做?我的照片现在都在资源中的原始文件夹中。很抱歉,我的英语不好,带有自定义列表适配器。对于参考..通过此K链接
android:windowSoftInputMode="stateHidden"