2013-10-11 31 views
2

我正在运行一个for-loop并生成应该可点击的TextViews,因为我想先启动一个intent并将url作为参数以及源代码传递。获取动态生成的TextView文本点击它时

所以,我已经试过这

articleURL[i].setPaintFlags(articleURL[i].getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
articleURL[i].setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //System.out.println(articleURL[v.getId()].getText().toString()); 
     System.out.println(v.getId()); 
    } 
}); 

我遇到的问题是,v.getId()始终为0。当我使用注释代码

System.out.println(articleURL[v.getId()].getText().toString()); 

我得到一个例外说

java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1 

我只需要我点击的TextView的内容。我到底如何得到它? articleURL [i]不起作用,因为他当时不知道我。 v.getId()如何总是-1?无论我点击哪一个?

这下面是完整的for循环

TextView articleURL = new TextView[hashMapSize]; 
for (int i = 0; i < hashMapSize; i++) { 
    articleURL[i] = new TextView(getActivity()); 
    articleURL[i].setPaintFlags(articleURL[i].getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
    articleURL[i].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      System.out.println(articleURL[v.getId()].getText().toString()); 
      //System.out.println(v.getId()); 
     } 
    }); 
} 

回答

10

你真正得到的参数的查看。只需将它转换为TextView的,并呼吁getText()

public void onClick(View v) { 
    Log.d("text",((TextView) v).getText().toString()); 
} 

也不要使用System.out.println。这是Android,而不是桌面Java,而且编码android是一个巨大的区别于普通的Java。你应该得到一本关于Android的书并阅读它,否则你的应用程序很快就会崩溃,你将无法修复它们。

+0

谢谢,铸造它的工作。 ;) – Musterknabe

0

你可以尝试以下方法:

View.OnClickListener listener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     System.out.println(((TextView)v).getText()); 
    } 
}; 
// ... some loop 
articleURL[i].setOnClickListener(listener); 

如果你也想获得项目的索引,试试这个:

View.OnClickListener listener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     System.out.println(v.getTag()); 
    } 
}; 
// ... some loop 
articleURL[i].setTag(i); 
articleURL[i].setOnClickListener(listener); 
0

试试这个..

以此为globel

TextView articleURL[]; 

然后我nitial像下面

articleURL = new TextView[hashMapSize]; 

和articleURL然后如果你的扩展fragement指低于

articleURL[i] = new TextView(getActivity()); 

使用扩展活动意味着

articleURL[i] = new TextView(this); 

System.out.println(((TextView)v).getText().toString()); 
相关问题