android - 从 EditText 事件启动列表 Activity 时选择的第一个列表项

标签 android listview

我制作了一个带有 2 个屏幕的小型测试应用程序。第一个屏幕包含一个 EditText 和一个 Button。第二个屏幕只是一个显示 3 个静态项目的简单 ListActivity。 当用户在第一个屏幕上单击按钮或在 TextEdit 中按下回车键时,将启动 ListActivity。奇怪的是,如果 ListActivity 是通过在 EditText View 中按回车键启动的,那么第一个列表项会在启动后立即被选中。如果它是通过点击按钮启动的,一切正常 - 没有选择列表项。

这是启动 ListActivity 的代码。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.startup);

    final Button b = (Button)findViewById(R.id.but);
    b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            startList();
        }
    });

    final EditText t = (EditText)findViewById(R.id.in_text);
    t.setOnEditorActionListener(new OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            startList();
            return true;
        }
    });
}

public void startList(){
    Intent i = new Intent(this, TestList.class);
    startActivity(i);
}

这是ListActivity的代码

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list);

        inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        String[] str = {"a", "b", "c"};

        ListAdapter adapter = new ArrayAdapter<String>(this, R.layout.list_item, str){
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View row = 
                        null == convertView ? 
                        inflater.inflate(R.layout.list_item, null) : 
                        convertView;

                String s = getItem(position);
                TextView tvid = (TextView)row.findViewById(R.id.word_suggestion_item_text);
                tvid.setText(s);

                return row;
            }
        };

        setListAdapter(adapter);
    }

知道为什么会这样吗?

西蒙

最佳答案

The weird thing is if the ListActivity was started by pressing the enter key in the EditText view, then the first list item is selected right after the startup. if it was started by hitting the button, everything is normal - no list item is selected.

如果他们在您启动 ListActivity 之前立即使用硬件输入(例如,Enter 键),他们将不会处于触摸模式。如果他们在您启动 ListActivity 之前立即使用触摸屏,他们将处于触摸模式。选择突出显示不显示在触摸模式中。参见 here了解更多。

关于android - 从 EditText 事件启动列表 Activity 时选择的第一个列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2956101/

相关文章:

java - Android TLSv1.2 握手失败

java - XSL 使用参数 for-each

java - 最佳实践 : Input Validation (Android)

android - notifyDataSetChanged 不适用于 Thread

c# - 将 .csv 文件读入 WPF 应用程序 (C#)

android - 使用 smoothScrollToPosition() 函数时如何使 ListView 的滚动变慢?

android - 获得广告响应。错误代码 : 1

java - Erro : MethodHandle. invoke 和 MethodHandle.invokeExact 仅支持从 Android O (--min-api 26) 开始

c# - Windows Phone 8.1 listview 点击更改页面

android - 如何在 Android 的 ListView 中播放视频