使用按钮的文本属性搜索按钮

时间:2017-05-02 20:40:37

标签: java android

我希望能够搜索按钮的文本并返回与该搜索匹配的任何按钮。

E.g。我有三个按钮,每个按钮都有按钮文字:One,Two&三。 当我搜索“Two”时,我想要显示按钮测试“Two”的按钮。

我已经看到这是如何使用SearchView完成的,但这只是一个字符串,我不确定如何处理按钮文本

这是我的MainActivity

public class MainActivity extends AppCompatActivity {

private static  ListView lv;
private static Button bt, bt2, bt3;

ArrayList<Button> items;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    items = new ArrayList<>();
    items.add(0, bt);
    items.add(1, bt2);
    items.add(2, bt3);

    lv = (ListView) findViewById(R.id.list);
    lv.setAdapter(new MyListAdapter(this, R.layout.item, items));
}

private class MyListAdapter extends ArrayAdapter<Button> {
    private int layout;

    public MyListAdapter(Context context, int resource, List<Button> objects) {
        super(context, resource, objects);
        layout = resource;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder mainViewholder = null;
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(layout, parent, false);
            ViewHolder viewHolder = new ViewHolder();
            viewHolder.bt = (Button) convertView.findViewById(R.id.button);
            viewHolder.bt2 = (Button) convertView.findViewById(R.id.buttonn);
            viewHolder.bt3 = (Button) convertView.findViewById(R.id.buttonnn);
            convertView.setTag(viewHolder);

        } else {
            mainViewholder = (ViewHolder) convertView.getTag();
        }
        return convertView;
    }
}

public class ViewHolder {
    Button bt;
    Button bt2;
    Button bt3;
}
}

1 个答案:

答案 0 :(得分:0)

我真的不明白你想做什么。但是,代码中有一些我们通常不会使用ListView的东西。

  1. 您应该将一组数据模型传递给ArrayAdatper,而不是UI控件。
  2. 您的MyListAdapter不使用给定的项目。
  3. 向ArrayList添加数据时无需指定位置。
  4. 看来,在您的代码中,每行有3个按钮。因此,您的数据模型应包含要在3个按钮和3个布尔值上显示的文本,以控制其可见性。您搜索模型中的按钮文本并更改布尔值,然后调用notifyDataSetChanged。将为每行调用GetView以更新UI。