ListView изменение текста при щелчке по элементу



У меня есть listview, который построен из textviews.



Если пользователь нажимает на список элементов, текст щелкнутого элемента будет изменен, как я могу это сделать?



Я знаю, как добавить новый элемент, но изменить его текст? Как я могу это сделать?

546   4  

4 ответов:

Вы можете сделать это с помощью AdapterView.OnItemClickListener . Реализуйте метод onItemClick(AdapterView<?> parent, View view, int position, long id). view, который вы получаете здесь, - это TextView щелкнутого элемента, поэтому его должно быть достаточно, чтобы сделать

((TextView)view).setText("Hey, I've just been tapped on!");

Прежде всего, вам нужно добавить OnItemClickListener в ваш ListView:

mMyListView.setOnClickListener(new OnItemClickListener(
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    }
));

В методе onItemClick из OnItemClickListener существует параметр view. Он содержит строку ListView, которая была нажата.

С помощью этого представления вы можете получить представление TextView и затем изменить текст:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    TextView tv = (TextView) view.findViewById(R.id.your_text_view_id);
    tv.setText(...);
}

Если ячейка ListView содержит только TextView, можно безопасно привести представление непосредственно в TextView:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    TextView tv = (TextView) view;
    tv.setText(...);
}
 mListView.setOnClickListener(new OnItemClickListener(
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        TextView mTextView = (TextView) view;
        mTextView.setText("TextView was Clicked");
    }
));

Ну это будет работать, если у вас есть простой адаптер:

mListView.setOnClickListener(new OnItemClickListener(
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        TextView mTextView = (TextView) view;
        mTextView.setText("TextView was Clicked");
    }
));

Но если у вас есть пользовательский вид , вам нужно найти вид, чтобы изменить текст:

mListView.setOnClickListener(new OnItemClickListener(
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        //TextView mTextView = (TextView) view;
        //mTextView.setText("TextView was Clicked");
        ((TextView)(view.findViewById(R.id.description))).setText(""TextView was Clicked");
    }
));

Comments

    Ничего не найдено.