我正在尝试制作一本圣经应用。我使用listview来显示经文..在我的listview中,我在listview的列表视图的customlayout中使用了textview,我在listview下面放了一个搜索栏,以便用户可以调整字体大小。我解决了这个问题但我的问题只是当我使用搜索栏时第一项调整。我看到了一些帖子,但他们使用了getView方法,我没有使用它..请帮助,我是android开发的新手
主要活动代码:
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int Blast;
@Override
public void onStopTrackingTouch(SeekBar seekBar){
TextView shopName = (TextView)findViewById(R.id.item_version);
prefs = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor ed = prefs.edit();
ed.putFloat("fontsize", ((TextView) findViewById(R.id.item_version)).getTextSize());
ed.commit();
// myList.setSelection(1);
((TextView) findViewById(R.id.item_version)).setTextSize(TypedValue.COMPLEX_UNIT_PX, seekBar.getProgress());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar){
((TextView) findViewById(R.id.item_version)).setTextSize(TypedValue.COMPLEX_UNIT_PX,seekBar.getProgress());
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser){
((TextView) findViewById(R.id.item_version)).setTextSize(TypedValue.COMPLEX_UNIT_PX,progress);
Blast = progress;
}
});
public void viewAll1(){
Cursor cursor = myDB.getAllData2();
String[] from = new String[]{DBAdapter.KEY_NAME};
int[] to = new int[]{R.id.item_version};
SimpleCursorAdapter myCursorAdapter =
new SimpleCursorAdapter(this, R.layout.item_layout, cursor, from, to, 0);
ListView myList = (ListView) findViewById(R.id.listView);
myList.setAdapter(myCursorAdapter);
}
item_layout.xml
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/item_version"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textStyle="bold"
android:textIsSelectable="false"
android:typeface="serif"
android:paddingStart="20dp" />
答案 0 :(得分:1)
嗯,你应该使用getView
方法,它不会严重咬人。 getView
让您调整显示ListView
中每个视图的方式。 TextView
中存在item_version
ListView
findViewById
,因此getView
无法正常工作。获取对TextView的引用的唯一方法是使用SimpleCursorAdapter
。
您应该阅读有关ListView和适配器的教程,以便了解how getView works and how to not shoot yourself in the foot while using it,但这对您有所帮助。
覆盖float textSize = 14f;
public void setTextSize(float size){
textSize = size;
}
以保存字体大小的额外属性。类似的东西:
getView
然后,在该行的正下方,覆盖TextView textview = (TextView) view.findViewById(R.id.item_version);
textview.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
,以便为每个视图执行以下操作:
ListView
您的活动应该保留对适配器的引用。如果进度发生变化,请按以下步骤更新adapter.setTextSize(progress);
adapter.notifyDatasetChanged();
{{1}}