在ListView中更改TextView的填充

时间:2015-02-25 07:39:28

标签: android listview

我有一个listview,其中包含一个包含这些视图的arrayadapter

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

 <CheckedTextView        
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_item"
    android:gravity="center_vertical"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:textAppearance="?android:attr/textAppearanceListItemSmall" >
 </CheckedTextView>
</LinearLayout>

我希望在激活时在文本视图的左侧添加X填充,并在未选中时删除该填充。填充不会更新。我该如何管理?

1 个答案:

答案 0 :(得分:1)

由于CheckedTextView位于ListView之内,您可以使用AdapterView.OnItemClickListener方法在ListView上设置setOnItemSelectedListener (AdapterView.OnItemSelectedListener listener)并覆盖onItemClick(AdapterView<?> parent, View view, int position, long id)方法。

onItemClick()方法中,您可以查看哪个是被点击的视图(通过比较显示所点击的视图位置的position变量与{{1}确定它们是否匹配的实际位置)。然后,如果您的用户确实点击了CheckedTextView,请检查CheckedTextView是否属实。如果是,则以编程方式更改填充,否则将其保留。