如何解决如何在Java Android Studio中选择多个具有不同ID的TextView,例如findViewByIdR.id
我正在做一个项目,这部分地具有搜索引擎的功能,该功能突出显示要搜索的单词。
我有一个EditText和一个按钮,当按下按钮时,该按钮会高亮显示EditText中的单词。 如果在我为它分配findViewById(R.id.textView1)时在单个TextView中搜索它,它会完美地工作 但是,如果我有100个以上的TextView怎么办?我正在写一本很长的手册。 此外,XML中的每个TextField都有不同的名称。 例如textView1,txView1,textView2,txVi1等
我可能需要做些什么?我在很多地方看过,找不到任何东西。
我把.java代码的一部分留给您
public class Medicina extends AppCompatActivity {
EditText searchview;
Button btnBuscar;
boolean isHighlight = false;
TextHighlighter textHighlighter;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_medicina);
searchview = (EditText)findViewById(R.id.searchview);
btnBuscar = (Button)findViewById(R.id.btnBuscar);
btnBuscar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
if (!isHighlight){
textHighlighter = new TextHighlighter();
textHighlighter.setBackgroundColor(Color.parseColor("#FFFF00"))
.setBackgroundColor(Color.RED)
.addTarget()
.highlight(searchview.getText().toString(),TextHighlighter.BASE_MATCHER);
}
isHighlight = !isHighlight;
}
});
}
在.addTarget()中将找到findViewById(R.id.lalala) 如果只有一个TextView,但它只有数百个,那么它将起作用。
谢谢
前300行XML代码(从这里开始,都是相同的,绝大多数是TextView和ImageView)。 我将代码上传到GitHub,因为在帖子中粘贴它会给我一个错误。
https://github.com/lautarovculic/activity_medicina
解决方法
您可以为包含所有ViewGroup
的{{1}}分配一个ID。然后通过TextView
获得ViewGroup
,并遍历所有findViewById(R.id.viewgroup)
的子视图以获取其所有ViewGroup
。
TextView
如果您想要一种更通用的方法,以防public List<TextView> getAllTextViewsSimple() {
final List<TextView> result = new ArrayList<>();
final ViewGroup viewGroup = findViewById(R.id.viewgroup);
for (int i = 0; i < viewGroup.getChildCount(); i++) {
final View v = viewGroup.getChildAt(i);
if (v instanceof TextView) {
result.add((TextView) v);
}
}
return result;
}
不能放置在同一TextView
中。为最外面的ViewGroup
分配一个ID,然后获取并将其作为参数传递给递归函数以获取所有子元素ViewGroup
。
TextView
可帮助您与public List<TextView> getAllTextViews(View v) {
final List<TextView> result = new ArrayList<>();
if (v instanceof ViewGroup) {
final ViewGroup viewGroup = (ViewGroup) v;
for (int i = 0; i < viewGroup.getChildCount(); i++) {
result.addAll(getAllTextViews(viewGroup.getChildAt(i)));
}
} else if (v instanceof TextView) {
result.add((TextView) v);
}
return result;
}
一起使用的代码段
TextHighlighter
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。