如何使用 ButterKnife 库将文本设置为多个文本视图

How to set text to multiple textview using ButterKnife library

我有多个 textview,我想使用 Butter knife 库动态地向 textview 添加文本。我已经在我的代码中完成了这件事,但我想知道做同样事情的任何其他好方法。

    public class MainActivity extends AppCompatActivity {

    @BindViews({ R.id.tv1, R.id.tv2})
    List<TextView> listTextView;  

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

        // must define this otherwise null pointer error show.
        ButterKnife.bind(MainActivity.this);

        listTextView.get(0).setText("First TextView ");
        listTextView.get(1).setText("Second TextView ");
    }
}

您可以将文本内容存储在另一个数组中,比如 textTitles 然后 使用 Butterknife 的 Action 界面设置每个文本视图的文本

static final ButterKnife.Action<TextView> SET_TEXT = new ButterKnife.Action<TextView>() {
   @Override 
   public void apply(TextView view, int index) {
       view.setText(textTitles[index]);
   }
};

然后最后调用

ButterKnife.apply(listTextView, SET_TEXT);

试试这个。

@BindViews({R.id.tv1, R.id.tv2, ...})
    List<TextView> listTextView;

    String names[] = {"aaa", "bbb", "ccc" ...};

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

        for (int i = 0; i < listTextView.size(); i++) {
            listTextView.get(i).setText(names[i]);
        }        
    }

Android Studio 现在支持开箱即用的数据绑定。它是 Butterknife 的 mvvm 模式和官方替代品,您可能想改用它:https://developer.android.com/topic/libraries/data-binding/index.html