任何人都可以指导我如何为动态生成的TextViews设置setOnClickListener。 我的应用程序中有几个按钮。现在,当单击某个特定按钮时,根据返回的元素数量从数据库中检索某些特定文本元素,生成相应的TextView以显示检索到的文本元素。 现在我遇到的问题是我不知道如何为动态生成的TextView设置onClickListner。以下是我正在创建TextView的代码片段。请指导我应该怎么做。谢谢你
public void onClick(View v) {
switch (v.getId()) {
case R.id.imageButton1:
catagory = "General";
IndependentDB genData = IndependentDB.getInstance();
genData.open(this);
ArrayList<TextHolder> genList = new ArrayList<TextHolder>();
genList = genData.getAllTextFromGenT();
genData.close();
x = genList.size();
String xstr = new StringBuilder().append(x).toString();
System.out.println(xstr);
mainText = new TextView[x];
textLayout = new LinearLayout[x];
llseperator = new LinearLayout[x];
textLayoutContainer
.setBackgroundResource(R.color.dark_navy_blue);
if (!genList.isEmpty()) {
for (int i = 0; i < x; i++) {
TextHolder firstOne = genList.get(i);
String text = firstOne.getText();
mainText[i] = new TextView(this);
mainText[i].setId(i);
mainText[i].setText("Text");
mainText[i].setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mainText[i].setTextSize(25);
mainText[i].setGravity(Gravity.CENTER);
mainText[i].setText(text);
mainText[i].setTextColor(0xFFFFFFFF);
mainText[i].setClickable(true);
mainText[i].setOnClickListener(this);
llseperator[i] = new LinearLayout(this);
llseperator[i].setId(i);
llseperator[i].setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
llseperator[i].setGravity(Gravity.CENTER);
llseperator[i]
.setBackgroundResource(R.drawable.tv_seperator);
textLayout[i] = new LinearLayout(this);
textLayout[i].setId(i);
textLayout[i].setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
textLayout[i].setGravity(Gravity.CENTER);
textLayout[i].addView(mainText[i]);
textLayoutContainer.addView(textLayout[i]);
textLayoutContainer.addView(llseperator[i]);
}// End of for
}// End of If
break;}
答案 0 :(得分:0)
例如。你有一个List tvs来存储db结果创建的TextView对象。你应该做的是这样的:
for(int i =0;i<tvs.count;i++){
tvs.get(i).setOnClickListener(new OnClickListener(){
...
})
}
答案 1 :(得分:0)
你已经在Activity类中使用了onClick()
方法(实现了View.setOnClickListener),所以我建议你创建一个实现View.setOnClickListener接口的新类来处理TextView的点击。
尝试,
class TextClick implements View.setOnClickListener {
@Override
public void onClick(View view) {
TextView tx=(TextView) view;
...
}
}
并设置点击监听器,
TextClick click=new TextClick();
for (int i = 0; i < x; i++) {
TextHolder firstOne = genList.get(i);
String text = firstOne.getText();
mainText[i] = new TextView(this);
mainText[i].setOnClickListener(click);
...
}
答案 2 :(得分:0)
无论视图是否是动态生成的,点击侦听器的设置都是相同的。
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dosomething();
}
});