Java 如何为动态生成的文本视图设置onClickListener?
有人能告诉我如何为动态生成的文本视图设置ClickListener吗。 我的应用程序中几乎没有按钮。现在,当单击某个特定按钮时,会根据返回的元素数从数据库中检索到一些特定的文本元素,并生成相应的文本视图以显示检索到的文本元素。 现在我遇到的问题是,我不知道如何为动态生成的TextView设置onClickListner。下面是我创建TextView的代码段。请指导我该怎么做。谢谢Java 如何为动态生成的文本视图设置onClickListener?,java,android,textview,Java,Android,Textview,有人能告诉我如何为动态生成的文本视图设置ClickListener吗。 我的应用程序中几乎没有按钮。现在,当单击某个特定按钮时,会根据返回的元素数从数据库中检索到一些特定的文本元素,并生成相应的文本视图以显示检索到的文本元素。 现在我遇到的问题是,我不知道如何为动态生成的TextView设置onClickListner。下面是我创建TextView的代码段。请指导我该怎么做。谢谢 public void onClick(View v) { switch (v.getId()) {
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;}
public void onClick(视图v){
开关(v.getId()){
案例R.id.imageButton1:
分类=“一般”;
IndependentDB genData=IndependentDB.getInstance();
genData.打开(本);
ArrayList genList=新的ArrayList();
genList=genData.getAllTextFromAgent();
genData.close();
x=genList.size();
字符串xstr=new StringBuilder().append(x).toString();
System.out.println(xstr);
mainText=新文本视图[x];
text布局=新的线性布局[x];
LLSeparator=新的线性布局[x];
textLayoutContainer
.setBackgroundResource(R.color.深海军蓝);
如果(!genList.isEmpty()){
对于(int i=0;i
例如,您有一个列表tvs来存储由db结果创建的TextView对象。您应该这样做:
for(int i =0;i<tvs.count;i++){
tvs.get(i).setOnClickListener(new OnClickListener(){
...
})
}
for(int i=0;i在Activity类(implemented View.setOnClickListener)中已经有了onClick()
方法,因此我建议您创建一个新类,该类实现View.setOnClickListener接口来处理文本视图的单击
试试看
并设置click listener
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);
...
}
TextClick=newtextclick();
对于(int i=0;i
无论视图是否动态生成,单击侦听器的设置都是相同的
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dosomething();
}
});
谢谢你的回复。你的答案无论如何都不完整,但我明白你想说的。我不确定我是否需要使用for loop,如果必须的话,它在代码中的位置。我已经尝试过使用for loop一次,但没有成功。另外,我直接在LinearLayout中添加我的文本视图,而不使用ListView。谢谢你的帮助回复。但是它如何知道哪个TextView用户正在单击呢?我尝试了以下已经插入到我的for循环中的操作:mainText[i].setOnClickListener(new View.OnClickListener(){public void onClick(View v){dosomething();}});但这影响了所有的文本视图,而不是单击的特定文本视图谢谢你的回复。好的,我试试这个,看看它是否有效。
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dosomething();
}
});