urma
@urma
Java, android, Web

Как при нажатии на Button который внутри ListView вызвать позвонить?

Примерно такой
95e68fde9ef544b59341c1f35b424fd7.jps

Вот XML для элементов списка.
/>

    <TextView.... Имя />

    <TextView...Номер телефона
        android:id="@+id/phone_number" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/call_button"
        android:id="@+id/call_button"" />


И здесь я должен при нажатии на зеленую кнопку взять номер телефона из ListView и стартануть Intent вызова.
Я не знаю как получу номер при нажатии на Button.
  • Вопрос задан
  • 1402 просмотра
Решения вопроса 1
@drYOM
На кнопку можно назначить listener в котором находим textview с номером с помощью родительского view:
new OnClickListener(){
      @Override
		  public void onClick(View v) {
			    View parent = (View) v.getParent();
			    TextView numberTextView = (TextView) parent.findViewById(R.id.phone_number);
			    String number = numberTextView .getText().toString(); 
      }
};
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
NeiroNx
@NeiroNx
Программист
А как вы определяете на какую из множества кнопок нажали? Я бы при генерации списка из некоторого массива добавлял кнопке некоторый идентификатр, указывающий на запись в массиве. А потом при обработке нажатия - система передает ссылку на объект нажатия(кнопку) и можно получить любой ее параметр.
Например через setContentDescription() и getContentDescription()
View txt_layout = row.findViewById(R.id.txt_layout);
                txt_layout.setContentDescription(Integer.toString(position));
                txt_layout.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        if(view.getContentDescription() == null)return;
                        curPosition = Integer.parseInt(view.getContentDescription().toString());
                    }
                });

Может это не по феншую, зато работает.
Ответ написан
Комментировать
@kapitalistka
на ListView вешаете собственный адаптер. В переопределенном методе getView к кнопке привязываете onclickListener
Ответ написан
Комментировать
@Tiberal
Можно в getView к кнопке тег лепить с номером, а в onClick его вытаскивать из вьюхи. Позволит избежать кучи лисентеров.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы