2015-05-20 2 views
0

У меня есть список строк. Я динамически добавляю RelativeLayout для каждого из них и динамически добавляю TextViews в каждый из релятивизаций. Теперь, когда я нажимаю, я отправляю это значение текстового поля в следующую операцию. Ниже приведен код.putExtra на динамически созданных просмотров android

for(int i = 0; i < Names.size(); i++) 
    {      
    textView = new TextView(this); 
     textView.setText(Names.get(i)); 

     rt=new RelativeLayout(this); 
     rt.setBackgroundResource(R.drawable.mednamedash); 
     int curTextViewId = prevTextViewId + 1; 
     int curRLId = prevRLId + 1; 
     textView.setId(curTextViewId); 
     rt.setId(curRLId); 
     final RelativeLayout.LayoutParams params = 
      new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 
              RelativeLayout.LayoutParams.WRAP_CONTENT); 
     params.addRule(RelativeLayout.BELOW, prevTextViewId); 


     final RelativeLayout.LayoutParams tvParams = 
       new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
               RelativeLayout.LayoutParams.WRAP_CONTENT); 
     tvParams.addRule(RelativeLayout.CENTER_IN_PARENT); 
     rt.addView(textView, tvParams); 


     prevTextViewId = curTextViewId; 
     prevRLId=curRLId; 
     noon.addView(rt, params); 
     rt.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent i=new Intent(Dashboard.this,ReminderPopUp.class); 
       i.putExtra("medicinename", textView.getText().toString()); 
       startActivity(i); 
      } 
     }); 

    }    

Проблема заключается в том, что если у меня есть 10 RelativeLayouts с различными текстами и я, нажав на любой из них, независимо от того, какой из них я щелкая, только последнее значение TextView передается следующей деятельности; а не значение, для которого я нажал. Помогите Спасибо

+1

Почему вы не посылаете Names.get (I) вместо отправки textView.getText(). ToString()? – NarendraJi

ответ

2

Вы всегда становитесь последним, потому что вы переопределяете класс-член на каждой итерации цикла.

можно установить OnClickListener в TextView вместо RelativeLayout и отливать v, нажатая View, чтобы TextView

textView.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent i=new Intent(Dashboard.this,ReminderPopUp.class); 
      i.putExtra("medicinename", ((TextView)v).getText().toString()); 
      startActivity(i); 
     } 
}); 
0

пытаются использовать щелкнул вид, который ваш TextView для этого изменить код, чтобы это .После этого вы получите контекст текущего щелчка textview, а не последний.

rt.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
    TextView txt=(TextView)v; 
       Intent i=new Intent(Dashboard.this,ReminderPopUp.class); 
       i.putExtra("medicinename", txt.getText().toString()); 
       startActivity(i); 
      } 
     }); 
0

В OnClick, получить текстовое представление от относительного расположения как

TextView textView = (TextView) rl.getChildAt(0); 
String name= textView.getText().toString();