我对android开发很新,我目前有一个简单的swipe-tablayout,包含5个片段,每个片段都有一个垂直的LinearLayout,大约有20-30个水平LinearLayout,带有TextView,(SeekBar)和EditText /开关。
Layoutsnippet:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:text="Setting1"
android:layout_width="0px"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_weight="3"/>
<SeekBar
android:id="@+id/seekBar"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="4"
android:max="50"
android:progress="25" />
<Switch
android:id="@+id/switch1"
android:layout_width="0px"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_weight="3"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:text="Setting2"
android:layout_width="0px"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_weight="3"/>
<SeekBar
android:id="@+id/seekBar2"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="4"
android:max="50"
android:layout_gravity="center_vertical"
android:progress="25" />
<EditText
android:id="@+id/editText2"
android:layout_width="0px"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_weight="3"
android:inputType="numberSigned"/>
</LinearLayout>
有没有比为每个EditText / Seekbar / Switch做“findViewById”更乏味的方法?
另外,我想给所有EditTexts一个FocusChangeListener,所有SeekBars都是一个SeekBarChangeListener,这样EditTexts文本就会反映SeekBar的进度值,而SeekBar会对EditText输入作出反应。
我想避免写作:
sw1 = (Switch) findViewById(R.id.switch1);
et1 = (EditText) findViewById(R.id.editText1);
sb1 = (SeekBar) findViewById(R.id.seekBar2);
sb1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean
fromUser) {
et1.setText(Integer.toString(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
et1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
sb1.setProgress(Integer.parseInt(et1.getText().toString()));
}
});
一遍又一遍。
非常感谢任何帮助! :)