我在过滤列表时遇到问题。我正在使用 onTextChange() 方法。它工作正常,但问题是当我在编辑文本中键入单个字符时,软键盘会消失,我必须再次点击编辑文本才能输入完整的字符串。我还编写了代码,以便软键盘在文本更改后不会消失,但要输入仍然我必须点击编辑文本。这是我的代码:
search.addTextChangedListener(new TextWatcher() {
@ Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
String startwith = s.toString();
ArrayList < Myshares > filterList = new ArrayList < Myshares > ();
for (int i = 0; i < fileList.size(); i++) {
if (fileList.get(i).getName().toLowerCase().startsWith(startwith) || fileList.get(i).getName().toUpperCase().startsWith(startwith)) {
filterList.add(fileList.get(i));
}
}
adapter = new MListAdapter(PlayListActivity.this, filterList);
playListView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@
Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@
Override
public void afterTextChanged(Editable s) {
search.setSelection(search.getText().length());
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(search, InputMethodManager.SHOW_IMPLICIT);
}
});
这是我用于编辑文本的 xml 代码:
<EditText
android:ems="10"
android:id="@+id/search_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:layout_weight="2"
android:background="@drawable/searchbox"
android:editable="true"
android:focusable="true"
android:inputType="textFilter"
android:hint="Search"
android:keepScreenOn="true"
android:paddingLeft="10dp"
android:textSize="15dp" />
我还在列表视图上设置了 android:focusable="false" 属性,这样它就不会与软键盘重叠。但是编辑文本的问题仍然相同。这里是截图
当我插入一个单字符列表时,会得到过滤器,并且光标从编辑文本框中消失了。