1

我在 android 中创建了一个自定义对话框,其中包含一个 EditText 和一个 ListView。当我选择任何项目时,列表视图 onItemClickListener 会正确触发,但我的 EditText 的侦听器并非如此。

这是我的代码:

EditText filterEditText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

LayoutInflater factory = LayoutInflater.from(this);
View content = factory.inflate(R.layout.dialog_layout, null);
filterEditText = (EditText) content
        .findViewById(R.id.filterEditText);
filterEditText.addTextChangedListener(txtListener);

............


    TextWatcher txtListener = new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {

            filterEditText.setText("text entered");
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
        }
    };
4

1 回答 1

4

我正要删除帖子,但我决定提出解决方案,以防有人遇到同样的问题。

我通过将我的代码从 onCreate 移动到我创建对话框的方法中来解决它:

public void createLocationsDialog() {

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

    builder.setTitle("Choose a location");

    LayoutInflater factory = LayoutInflater.from(MainActivity.this);
    View content = factory.inflate(R.layout.dialog_layout, null);

    ListView locationsList = (ListView) content
            .findViewById(R.id.locationsListView);
    filterEditText = (EditText) content
            .findViewById(R.id.filterEditText);

    ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(
            MainActivity.this, android.R.layout.simple_list_item_1,
            data.getName());
    locationsList.setAdapter(modeAdapter);

    builder.setView(content);

    locationsDialog = builder.create();

    locationsList.setOnItemClickListener(listItemClicked);
    filterEditText.addTextChangedListener(txtListener);

    locationsDialog.show();
}
于 2013-05-01T19:51:21.717 回答