Задать текст на основе нажатия элемента списка

У меня есть макет, состоящий из ListView и метки. Посмотрите на изображение ниже.

введите описание изображения здесь

Я реализовал просмотр списка с помощью базового адаптера в отдельном файле.java. Может кто-нибудь предложить мне, как я могу установить текст для метки при нажатии элемента списка?

ИЗДАНО:

Текст метки должен быть числом нажатых пунктов списка. Предположим, что я нажал кнопку в элементе списка, метка должна быть установлена ​​на 1. Аналогично, в следующей попытке, если я нажал кнопку другого элемента списка, он должен быть установлен на 2 и т. Д...

7 ответов

Решение

Сэр,

Вы говорите, что у вас есть адаптер в одном классе и активность в другом файле. Ну, вы могли бы сделать это, чтобы обновить текстовое представление.

передать контекст в действие, и если он находится в адаптере, вы поддерживаете счетчик, то после обновления счетчик,

затем предположим, что у вас есть этот метод в упражнении

public void updateTextView(int count) {
    // enter your code here to set the count in the textview
}

и из baseAdapter вызовите вышеуказанный метод следующим образом:

if(mContext != null) {
    ((YourActivity)mContext).updateTextView(mCount);
}

и текстовое представление в деятельности будет обновлено! Я надеюсь, что это помогает.

В вашем OnItemClickListener вызов adapter.getItem(int position) чтобы извлечь объект из коллекции, поддерживающей ваш BaseAdapter, Оттуда вы сможете получить любые поля, которые вам нужны.

Редактировать:

Ваше редактирование проясняет вопрос. Обновленный ответ:

private int mCounter = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // ListView listView = getYourListView();
    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            mCounter++;
            updateTextView();
        }
    });

    if(savedInstanceState != null) {
        mCounter = savedInstanceState.getInt("counter", 0);
    }

    updateTextView();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    outState.putInt("counter", mCounter);
}

private void updateTextView() {
    // TextView textView = getYourTextView();
    textView.setText(String.valueOf(mCounter));
}

Просто OnItemClickListener в вашем ListView затем в onClick вы получите значение arg2 какой position предмета, по которому щелкают.

Просто получите это значение из ArrayList из которого вы отображаете ListView и покажи это...

Надеюсь, это то, что вам нужно, если я не понял ваш вопрос.

В onListItemClick вызов list.getItemAtPosition(position) получить текст элемента

затем установите этот текст в textview1.setText(listText),

Попробуй этот код

listview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            String itemText=(String) arg0.getItemAtPosition(arg2);
            yourLable.setText(itemText);

        }
    });

Сначала реализуйте свой onItemClickListener, где вы получите параметр int arg2, который является position, поэтому получайте эту позицию и делайте все, что захотите, как показано ниже.

 list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {

                LABLE.setText(""+arg2);

            }
        });

Проверьте этот код

public class ListA extends ListActivity {
 private TextView selection;
private static final String[] items={"Item 1", "Item 2", "Item 3"};
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_list);
setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                items));
selection=(TextView)findViewById(R.id.selection);
}
@Override
 public void onListItemClick(ListView parent, View v, int position,
                            long id) {
selection.setText(position);
}
}
Другие вопросы по тегам