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

时间:2010-06-02 08:38:02

标签: android listview

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

这是启动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);
    }

为什么会发生这种情况的任何想法?

西蒙

1 个答案:

答案 0 :(得分:1)

  

奇怪的是如果是ListActivity   按回车键启动   在EditText视图中,然后是第一个   列表项是在选中之后选择的   启动。如果它是通过击中开始的   按钮,一切正常 - 没有   列表项已被选中。

如果他们在您启动ListActivity之前立即使用硬件输入(例如,输入密钥),则他们将不会处于触摸模式。如果他们在您启动ListActivity之前立即使用触摸屏,则他们将处于触摸模式。选择突出显示未在触摸模式下显示。有关详情,请参阅here