2014-02-04 4 views
1

Я пытаюсь динамически генерировать сообщения на основе того, какой элемент щелкнул в ListView. Я пробовал код, который я разместил ниже. Я хочу, чтобы это давало сообщение с текстом, относящимся к нажатому элементу.ListView Popup Message

int messageId = getResources().getIdentifier(item,"strings",getPackageName()); 
         String popUpMessage = getString(messageId); 
         PopUp.setMessage(popUpMessage); 
         PopUp.show(); 
+0

Вы можете показать значение сообщения по его положению в listview – rajshree

ответ

0

С помощью этого кода, как вы узнаете, на какой предмет нажали?

использовать itemclick прослушиватель для listview, тогда вы получите тот элемент, который нажал.

Используйте параметр int position, чтобы получить, какой элемент щелкнуть.

+0

У меня это внутри прослушивателя onitemclick. чтобы получить имя строки я использую 'Струнный элемент = (String) drinkList \t \t \t \t \t \t \t \t \t .getItemAtPosition (положение);' но когда я нажимаю на что-то он выходит из строя. Я могу получить титул должен быть установлен в качестве элемента, который щелкнул, но я не могу получить пользовательское сообщение, чтобы установить \t \t \t \t \t \t \t \t \t .getItemAtPosition (позиция) ' –

-1

Следующие шаги необходимы

  1. Получить ListView

    ListView listView=(ListView)findViewById(R.id.lv); 
    
  2. Регистрация слушателя по пунктам.

    listView.setOnItemClickListener(new OnItemClickListener() { 
         public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
    
    
    } 
    
    }); 
    
  3. Сделать диалоговое окно оповещения (вставьте его внутри метода onclick выше).

    AlertDialog.Builder builder=new AlertDialog.Builder(context); 
    String item = (String) parent.getItemAtPosition(position); 
    builder.setMessage(item); 
    builder.show(); 
    

обновление для комментариев

Для динамического сообщения вам просто нужно установить свойство сообщения строителя. Как это -

builder.setMessage((String)parent.getItemAtPosition(position));

В строке выше предполагается, что ListView состоит только из одной вещи, если у него есть несколько вещей, как строки, содержащей название и сообщение, и вы хотите получить сообщение и установить его диалог. Тогда сделайте это

View rowView=(View)parent.getItemAtPosition(position); 
TextView messageView=(TextView)rowView.findViewById(R.id.row); 
builder.setMessage(messageView.getText().toString()); 

Надеюсь, что на это на него надуется.

+0

Есть ли способ, что я мог бы получить string из ресурса типа strings.xml вместо ListView. так как я хотел бы, чтобы заголовок AlertDialog был элементом в позиции, но сообщение что-то, что связано с этим элементом. –

+0

ya использовать этот метод setTitle (int titleId) передать в свой идентификатор строки, например builder.setTitle (R.string.something); – cafebabe1991

+0

правильно, но есть ли способ динамически получить этот идентификатор? –

Смежные вопросы