将OnClickListener添加到动态创建的Textview中

时间:2014-02-13 14:04:10

标签: android textview onclicklistener

所以我正在尝试将OnClickListeners添加到水平滚动内部动态创建的textview。我目前已经动态创建了文本视图,但当然,我设置OnClickListener的方式导致其中一个TextViews的任何单击只发送最后创建的TextView的信息。例如,我有1000个文本视图,点击后所有1000个文本视图将为我提供第1000个textView的数据。我想拉出.text.toString(),无论点击哪个,都可以将数据发送到其他地方。这就是我所拥有的:

protected void onPostExecute(JSONArray jArr) {

        try {
            for (int i = 0; i < jArr.length(); i++) {

                flightList.add(jArr.getString(i));
                aText = new TextView(getApplicationContext());
                aText.setText(jArr.getString(i));
                aText.setWidth(50);
                aText.setBackgroundColor(Color.BLACK);
                aText.setTextColor(Color.WHITE);
                aText.setOnClickListener(new OnClickListener(){

                    @Override
                    public void onClick(View v){
                        GetMillis myTimer = new GetMillis();
                        aURL = "http://somelink?startTs="
                                + myTimer.getThreeAMToday()
                                + "&endTs="
                                + myTimer.getFourAMTomorrow()
                                + "&datafield="
                                + aText.getText().toString();

                        new myScheduleTask().execute();
                    }
                });

感谢任何帮助!

5 个答案:

答案 0 :(得分:1)

您可以使用aText.setTag()存储要发送的字符串。单击视图后,您可以使用v参数从标记中获取字符串

答案 1 :(得分:0)

试试这个

设置aText.setOnClickListener(this);

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
     aURL = "http://somelink?startTs="
                            + myTimer.getThreeAMToday()
                            + "&endTs="
                            + myTimer.getFourAMTomorrow()
                            + "&datafield="
                            + v.getText().toString();

    }

答案 2 :(得分:0)

可能会有所帮助

/** This is used to create Answer Letters */
    for (int i = 0; i < length; i++) {

        mAnsImage[i] = new TextView(getActivity());         
        mAnsImage[i].setOnClickListener(onAnswerClickListener);
    }

答案 3 :(得分:0)

使用textView.setID()方法为每个TextView设置唯一ID,然后在onClickListener的onClick方法中,使用它的ID获取TextView并执行适当的操作。

public void onClick(View v){
     switch(v.getID()){
     case 1:
          //This is TextView with id=1
          break;
     }
}

答案 4 :(得分:0)

如果你只有TextViews,你可以这样做:

@override
public void onClick(View v) {
      String clickedTextViewValue = ((TextView) v).getText().toString();
}