如何为动态创建的textViews设置OnClickListener?

时间:2012-12-09 08:20:18

标签: android

我创建了一些textViews,我想创建一个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的引用,而不是我添加的最后一个?我不能只在onLongClick中调用tv1,因为它不是静态的..

2 个答案:

答案 0 :(得分: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();
         }

    });
//...

答案 1 :(得分: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);
}