如何在Java Android Studio中选择多个具有不同ID的TextView,例如findViewById(R.id。)

Lautaro Villarreal Culic'

我正在做一个项目,它的一部分具有搜索引擎的功能,突出显示所搜索的单词。

我有一个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,但它只有数百个,它将可以工作。

谢谢

XML代码的前300行(从这里开始,都是相同的,绝大多数是TextView和ImageView)。我将代码上传到GitHub,因为在帖子中粘贴它会给我一个错误。

https://github.com/lautarovculic/activity_medicina

孙潘

您可以为分配一个ID,ViewGroup其中包含所有TextView然后获取ViewGroupbyfindViewById(R.id.viewgroup)并遍历all的所有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分配给最外层的ID,ViewGroup然后获取并将其作为参数传递给递归函数以获取所有child 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

final List<TextView> allTextViews = getAllTextViewsSimple();
textHighlighter.setBackgroundColor(Color.parseColor("#FFFF00"))
                        .setBackgroundColor(Color.RED);

for (TextView tv : allTextViews) {
    textHighlighter.addTarget(tv);
}                    

textHighlighter.highlight(searchview.getText().toString(),TextHighlighter.BASE_MATCHER);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Android中的自定义列表视图中选择具有ID的TextView?

Android studio kotlin,没有findViewById()不能直接选择ID

如何在python硒中选择具有相同ID的多个按钮

如何在SQL中的一张表中选择多个具有相同ID的值

如何在SQL中选择具有偶数ID的列?

如何在jQuery中选择具有ID链的元素?

如何在Android中具有多个选择的自定义列表视图中获取选中的项目ID

如何在Android Studio中常规使用R.id?

如何在Android中获取NFC ID?

如何在Android中获取线程ID

如何在具有相同 ID 的列中选择不同的值然后将它们删除 PHP SQL Server

如何在android中以编程方式设置android:id?

如何从具有guid id的集合中选择?

如何从PostgreSQL中具有ID列表的列中选择

如何在具有不同id的字符串xml android中找到重复的字符串?

MySQL:如何在列中选择具有特定值的 ID

如何在Java中获取线程ID

你如何在android studio中随处更改一些id或textlike文本视图的id

如何在Jquery中选择此ID?

如何在Android和IOS的混乱中获取设备ID

如何在Android中使用RecyclerView传递ID而不是位置

如何在Android中以编程方式在EditText中设置ID

如何在android .go中解析git commit id

如何在Android中获取默认的CALENDAR_ID?

如何在Android中获取唯一的设备硬件ID?

如何在Android Webview中按ID捕获元素点击?

如何在android API 8中检查当前的相机ID?

我如何在android中生成用户ID

如何在Android中获取Instagram API的位置ID