Первый элемент списка, выбранный при запуске списка из события EditText - PullRequest
2 голосов
/ 02 июня 2010

Я сделал небольшое тестовое приложение с 2 экранами. Первый экран содержит EditText и кнопку. Второй экран - это просто ListActivity, показывающий 3 статических элемента. ListActivity запускается, когда пользователь нажимает кнопку на первом экране или когда клавиша ввода была нажата в TextEdit. Странно то, что если ListActivity была запущена нажатием клавиши ввода в представлении EditText, тогда первый элемент списка выбирается сразу после запуска. если он был запущен нажатием кнопки, все нормально - элемент списка не выбран.

это код, который запускает 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);
    }

есть идеи, почему это происходит?

Simon

1 Ответ

1 голос
/ 02 июня 2010

Странная вещь, если ListActivity был запущен нажатием клавиши ввода в представлении EditText, затем первый элемент списка выбирается сразу после запускать. если это было начато, нажав кнопка все нормально - нет элемент списка выбран.

Если они используют аппаратный ввод (например, клавишу ввода) непосредственно перед запуском ListActivity, они не будут в сенсорном режиме. Если они используют сенсорный экран непосредственно перед запуском ListActivity, они будут в сенсорном режиме. Подсветка выбора не отображается в сенсорном режиме. Подробнее см. здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...