2012-12-09 61 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

相关问题