Android 向动态创建的文本视图添加OnClickListener

Android 向动态创建的文本视图添加OnClickListener,android,textview,onclicklistener,Android,Textview,Onclicklistener,因此,我尝试将OnClickListeners添加到水平滚动中动态创建的文本视图中。我目前已经动态创建了TextView,但当然,我设置OnClickListener的方式会导致任意单击其中一个TextView,只发送创建的最后一个TextView的信息。例如,我有1000个文本视图,所有1000个文本视图点击后都会给我第1000个文本视图的数据。我想拉取被单击者的.text.toString(),以便将数据发送到其他地方。以下是我得到的: protected void onPostExecut

因此,我尝试将OnClickListeners添加到水平滚动中动态创建的文本视图中。我目前已经动态创建了TextView,但当然,我设置OnClickListener的方式会导致任意单击其中一个TextView,只发送创建的最后一个TextView的信息。例如,我有1000个文本视图,所有1000个文本视图点击后都会给我第1000个文本视图的数据。我想拉取被单击者的.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();
                    }
                });
protectedvoid onPostExecute(JSONArray jArr){
试一试{
for(int i=0;i

非常感谢您的帮助!

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

设置
aText.setOnClickListener(此);

也许这会有帮助

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

        mAnsImage[i] = new TextView(getActivity());         
        mAnsImage[i].setOnClickListener(onAnswerClickListener);
    }
/**用于创建回复信*/
for(int i=0;i
使用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;
     }
}

如果您只有文本视图,则只需执行以下操作:

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

一个类似的选项是使用
aText.setId()
。这只是您想使用字符串还是int的问题。因此,我基本上会在创建TextView时使用aText.setId(jArr.getString(I));然后在url中使用v.getId().toString()???@Elliott aText.setTag/v.getTagso我已经合法地创建了1000个文本视图,每个视图都有不同的字符串作为文本。这是很多情况……另外,请尝试将onClick方法排除在循环之外。这将使代码看起来更干净。只有当您正在为所有文本视图寻找不同的实现时,这才是正确的。如果您只需要它们的文本只需单击(视图v){String text=v.getText().toString()}即可执行公共void操作。
@override
public void onClick(View v) {
      String clickedTextViewValue = ((TextView) v).getText().toString();
}