gpt4 book ai didi

android - 在 Android 中动态添加的 TextView 上单击事件

转载 作者:行者123 更新时间:2023-11-29 14:52:30 25 4
gpt4 key购买 nike

我正在尝试添加 20 个 TextView 并将 onclick 分配给动态添加的 TextView 。问题是每当我尝试单击任何动态 TextView 时。它总是触发最后添加的 TextView 的点击事件。

这是我的代码:

EditText s;
EditText t;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

RelativeLayout containerLayout = (RelativeLayout) findViewById(R.id.container);

for (int i = 0; i < 20; i++) {
TextView dynaText = new TextView(this);

dynaText.setText("Some text " + i);
dynaText.setTextSize(30);
dynaText.setTag("" + i);

dynaText.setOnClickListener(btnClickListener);
// Set the location of your textView.

dynaText.setPadding(0, (i * 30), 0, 0);

containerLayout.addView(dynaText);
}

}

OnClickListener btnClickListener = new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
RelativeLayout ll = (RelativeLayout) v.getParent();
TextView tv = (TextView) ll.getChildAt(2);
// Integer pos = (Integer) tv.getTag();
Toast.makeText(v.getContext(), "Toast " + v.getTag(),
Toast.LENGTH_SHORT).show();
}

};

最佳答案

1) 你应该首先让你的 TextViews Clickable :

for (int i = 0; i < 20; i++) {
TextView dynaText = new TextView(this);

dynaText.setText("Some text " + i);
dynaText.setTextSize(30);
dynaText.setTag("" + i);
dynaText.setClickable(true);//make your TextView Clickable
dynaText.setOnClickListener(btnClickListener);
// Set the location of your textView.

dynaText.setPadding(0, (i * 30), 0, 0);

containerLayout.addView(dynaText);
}

2) 修改你的onClickListener :

OnClickListener btnClickListener = new OnClickListener() {

@Override
public void onClick(View v) {
Log.d("btnClickListener", ""-----TextView Clicked : "+v.getTag());
Toast.makeText(YourActivity.this, "TextView Clicked : "+v.getTag(),
Toast.LENGTH_SHORT).show();
}

};

编辑:您正在一个接一个地添加您的 TextViews。这就是为什么点击事件会在最后一个添加时触发。尝试将 LinearLayoutandroid:orientation="vertical" 一起使用,或者尝试将每个新的 TextView 添加到前一个下方:

for (int i = 0; i < 20; i++) {
TextView dynaText = new TextView(this);

dynaText.setText("Some text " + i);
dynaText.setId(i+1);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
if(i!=0)
params.addRule(RelativeLayout.BELOW, i);
dynaText.setLayoutParams(params);
dynaText.setTextSize(30);
dynaText.setTag("" + i);

dynaText.setOnClickListener(btnClickListener);

containerLayout.addView(dynaText);
}

关于android - 在 Android 中动态添加的 TextView 上单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13969878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com