Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为动态生成的文本视图设置onClickListener?_Java_Android_Textview - Fatal编程技术网

Java 如何为动态生成的文本视图设置onClickListener?

Java 如何为动态生成的文本视图设置onClickListener?,java,android,textview,Java,Android,Textview,有人能告诉我如何为动态生成的文本视图设置ClickListener吗。 我的应用程序中几乎没有按钮。现在,当单击某个特定按钮时,会根据返回的元素数从数据库中检索到一些特定的文本元素,并生成相应的文本视图以显示检索到的文本元素。 现在我遇到的问题是,我不知道如何为动态生成的TextView设置onClickListner。下面是我创建TextView的代码段。请指导我该怎么做。谢谢 public void onClick(View v) { switch (v.getId()) {

有人能告诉我如何为动态生成的文本视图设置ClickListener吗。 我的应用程序中几乎没有按钮。现在,当单击某个特定按钮时,会根据返回的元素数从数据库中检索到一些特定的文本元素,并生成相应的文本视图以显示检索到的文本元素。 现在我遇到的问题是,我不知道如何为动态生成的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;}
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();
        }
    });