2012-12-09 56 views
0

我創建了textViews的行,我想製作一個OnClickListener,這樣當它們被點擊時,它們會返回文本。我有這樣的事情:如何爲動態創建的textView設置OnClickListener?

for (int i = 0; i < json.length(); i++) { 
    tv1.setText("Some text"); 

    public boolean onLongClick(View v) { 
     //something should go here 
    } 

    tableLayout.addView(tv1); 
} 

我應該怎麼做,這樣當我做onLongClick,我得到我選擇TextView的,而不是一個參考的最後一個我加?我不能只叫TV1的onLongClick裏面,因爲它不是靜態的..

回答

0

設置監聽器上TextView並使用onClick回調的參數:

for (int i = 0; i < json.length(); i++) { 
    tv1.setText("Some text"); 
    tv1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
       // v is the TextView that was clicked 
       String theText = ((TextView)v).getText().toString(); 
     } 

    }); 
//... 
+0

美麗。非常感謝! – Ci3

0

有一種技術。如果我理解你的問題是正確的,你可以把所有的動態TextView放入一個ArrayList中。像下面一樣

ArrayList<TextView> listTextView = new ArrayList<TextView>(); 

for (int=0; i<json.length; i++) { 
    TextView textView = new TextView(this); 
    textView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    textView.setText("Some Text"); 
    textView.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      TextView text = (TextView) v; 
      String theText = text.getText().toString(); 
     } 

    }); 
    listTextView.add(textView); 
} 
+0

謝謝!我正在嘗試這種方法,然後遇到問題。 – Ci3

相關問題