Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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
Java 如何使用searchManager搜索和筛选listview_Java_Android_Listview_Android Listview - Fatal编程技术网

Java 如何使用searchManager搜索和筛选listview

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" } ;

我正在使用字符串[]{“item 1”、“item 2”、“item 3”}作为arrayadapter,它将显示在我的ListView中,但现在的问题是我无法为搜索目的进行筛选。大多数在线教程都是经过筛选并从数据库中获取的,但就我而言,我根本不接触数据库,所有这些都只是硬编码的。对不起,我的英语不好,请帮忙:)

代码如下: MainActivity.java:

 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"