【问题标题】:Search function in android?安卓的搜索功能?
【发布时间】:2013-02-11 04:59:15
【问题描述】:

我的阵列就像 {"Samsung Tab","Samsung Note","Samsung Galaxy","Samsung Galaxy Pro","Nokia Lumia","Nokia 5130","Sony Xperia"} 之类的东西。编辑文本类型 GALAXY 并单击按钮我有 GO 我只想在下一个活动列表视图中显示 Samsung Galaxy ,Samsung Galaxy Pro。有知道的请帮帮我。

【问题讨论】:

  • 试试这个,使用TextWatcher它会帮助你。[点击这里][1] [1]:stackoverflow.com/questions/8543449/…
  • 在第一个活动中单击按钮后,它会转到第二个活动并在第二个活动中显示 Samsung Galaxy ,Samsung Galaxy Pro 列表视图。
  • 嗨,yugesh,我已经发布了示例代码。请尝试一下

标签: android android-listview android-searchmanager


【解决方案1】:

有一些方法可以做到这一点,这是一种方法,您可以创建一个自定义方法,如下所示。

 public ArrayList<String> getSearchedItems(String searchString){
 ArrayList<String>  list = new ArrayList<String>();

 for(int i = 0; i<array.length ;i++) { // array is the String array or list which contains all the Phone model names you want to search in.
  if((array[i].toLowerCase()).contains(searchString.toLowerCase())) { // contains method will check if user enterred string is available in your Model names
    list.add(array[i]);
    }
 }
 return list; // list of strings/names containing search String.
}

在您按下 go 按钮或从下一个 Activity 中调用此方法。获取名称列表。

【讨论】:

  • 包含不忽略大写或小写。我们必须以大写形式给出名称,表示大写,小写表示小写。否则不接受。
  • 没有得到你吗?你总是可以有另一个 if 条件来检查 upperCase 以及类似 array[i].contains(stringSearch.toUpperCase()),使其成为循环中的条件
  • 就像尝试将两个字符串都设为小写并检查,我希望你想给出一个独立于大小写的结果。检查我编辑的答案。尝试一些逻辑作为你的要求,我们不能提供确切的解决方案,不是吗?
  • 例如 Mac Mini 表示如果我给 mini 它不是搜索。如果我给 Mini 准确的名称,我将显示 Mac Mini。
  • 正如我所说,为什么不将单个大小写中的两个字符串转换为大写或小写都没关系,无论如何它都会返回true。
【解决方案2】:

试试这个,

  public class MainActivity extends Activity {

ArrayList<String> list = new ArrayList<String>();

private EditText searchEdt;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    // making it full screen
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_ugsimply_beta);
    list.add("Samsung Tab");
    list.add("Samsung Note");
    list.add("Nokia Lumia");
    list.add("Nokia 5130");
    list.add("Sony Xperia");
    searchEdt = (EditText) findViewById(R.id.searchEdt);
    searchEdt.addTextChangedListener(new TextWatcher() {

        private int textlength;
        private ArrayList<String> arrayList_sort = new ArrayList<String>();

        public void afterTextChanged(Editable s) {
            // Abstract Method of TextWatcher Interface.
        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // Abstract Method of TextWatcher Interface.
        }

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            textlength = searchEdt.getText().length();
            if (arrayList_sort != null)
                arrayList_sort.clear();

            for (int i = 0; i < list.size(); i++) {

                if (textlength <= list.get(i).toString().length()) {

                    if (searchEdt
                            .getText()
                            .toString()
                            .equalsIgnoreCase(
                                    (String) list.get(i).toString()
                                            .subSequence(0, textlength))) {
                        arrayList_sort.add(list.get(i));
                        Log.d("TAG", "log" + arrayList_sort.size());
                    }
                }
            }

        }
    });

}

}

您将获得搜索项目arrayList_sort。把这个数组列表放到另一个Activity

Intent i = new Intent(MainActivity.this,NextActivity.class);

i.putStringArrayListExtra("arraylist", arrayList_sort);
startActivity(i);

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多