2014-02-13 51 views
0

所以我想添加OnClickListeners動態創建的橫向滾動內的文字。我目前已經動態創建文字瀏覽,但當然,我設置OnClickListener結果的方式只需單擊其中一個TextView即可發送僅創建最後一個TextView的信息。例如,我有1000個文字瀏覽,點擊它們的全部1000個會給我第1000個文字瀏覽的數據。我想拉取任何被點擊的.text.toString(),以便將數據發送到別處。這是我得到的:添加OnClickListener動態創建Textviews

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

任何幫助表示讚賞!

回答

0

如果你所有的只是TextViews,你可以做:

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

您可以使用aText.setTag()來存儲要發送的字符串。當點擊視圖中,您可以使用v參數從標籤獲取字符串

+0

類似的辦法是使用'aText.setId()'。只是一個你想使用一個字符串還是一個int的問題。 – TronicZomB

+0

所以我本質上在TextView創建時去aText.setId(jArr.getString(i));然後在url中使用v.getId()。toString()??? – Elliott

+0

@Elliott aText.setTag/v.getTag – Blackbelt

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

    } 
0

可能,這將有助於

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

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

使用textView.setID()方法爲每個TextView設置唯一的Id,然後在onClickListener的onClick方法中爲TextView使用它的ID和d執行適當的操作。

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

所以我合法地創建了1000個文本視圖,每個視圖都以不同的字符串作爲文本。這是很多情況... – Elliott

+0

另外,請嘗試保持您的onClick方法不在您的循環中。這將使代碼看起來更清晰。 –

+0

只有當你正在爲所有人尋找不同的實現時才這樣。如果你只想讓他們的文本做public void onClick(View v){String text = v.getText()。toString()}。 –

相關問題