putExtra在动态创建的视图android上

时间:2015-05-20 13:03:32

标签: android android-layout android-relativelayout

我有一个字符串列表。我为每个动态添加了一个RelativeLayout,并在每个relativelayouts中动态添加TextViews。现在,当我点击时,我将此textview值发送到下一个活动。以下是代码。

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的最后一个值传递给下一个活动;不是我点击的价值。 请帮忙 谢谢

3 个答案:

答案 0 :(得分:2)

你总是得到最后一个,因为你在循环的每次迭代都覆盖了成员类。

您可以将OnClickListener设置为TextView而不是RelativeLayout并将v,点击的View设置为TextView < / p>

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);
        }
});

答案 1 :(得分: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);
            }
        });

答案 2 :(得分:0)

在onClick中,从相对布局中获取文本视图

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