0

我创建了文本视图行,并且我想创建一个 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,因为它不是静态的..

4

2 回答 2

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

    });
//...
于 2012-12-09T08:34:26.843 回答
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);
}
于 2012-12-09T08:38:55.687 回答