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

时间:2016-12-19 09:42:42

标签: android butterknife

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

    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 ");
    }
}

3 个答案:

答案 0 :(得分:2)

试试这个。

@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]);
        }        
    }

答案 1 :(得分:1)

您可以将文本内容存储在另一个数组中,然后说$('form').submit(function() { var formData = $(this).serialize(); // can always use formdata.EMAIL = newValue; to update it .... $.ajax({ .... data: formData, 使用Butterknife的textTitles界面来设置每个文本视图的文本

Action

然后最后致电

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

答案 2 :(得分:0)

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