【发布时间】:2017-01-21 15:11:32
【问题描述】:
我收到了创建 2 text boxes 的响应,我收到了两个视图的 URL 和显示文本,我将它们添加到 ArrayList 中。现在我需要在它们上添加点击监听器。我写了以下代码。
for(int i=0; i<tvArrayList.size(); i++){
TextView textView;
textView= tvArrayList.get(i);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i= new Intent(MavsV2PromoActivity.this, DynamicWebView.class);
i.putExtra("URL", URL_LINK);
i.putExtra("VIEW_NAME",VIEW_NAME);
startActivity(i);
}
});
}
问题在于,它将相同的 URL 值应用于两个视图,我单击第一个或最后一个文本视图,它会从列表中打开最后一个 text view 的 URL。
文本视图
ArrayList<TextView> tvArrayList= new ArrayList<TextView>();
for(int i=0; i<linksDataList.size(); i++){
URL_LINK= linksDataList.get(i).getLinkURL();
VIEW_NAME= linksDataList.get(i).getName();
TextView textView =new TextView(this);
textView.setText(linksDataList.get(i).getName());
if(linksDataList.size() != i) {
textView.append(" | ");
}
ll_links.addView(textView);
tvArrayList.add(textView);
}
【问题讨论】:
-
您的 URL_LINK 和 VIEW_NAME 正在被修改,并且将始终具有 tvArrayList 中最后一项的值。
-
我建议通过扩展 TextView 和应用一个字段来存储该 textview 的 url 和 view_name 来创建自定义 TextView 类。
-
@KartikSharma 自定义 TextView?我敢打赌,您的意思是实现
OnClickListener接口的自定义类,不是吗?
标签: android performance android-layout listview android-fragments