使用自定义布局更改Listview使用搜索栏进行文本化,而不使用getview

时间:2015-11-09 01:42:54

标签: android listview android-listview seekbar

我正在尝试制作一本圣经应用。我使用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" />

1 个答案:

答案 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}}