我有一个包含按钮和textview的listview,正常点击textview;但是我有一个单击按钮的方法,当单击按钮时它应该改变背景图像,所以通过单击按钮,按钮的所有实例都在改变背景图像,所以我点击列表视图中的fiew按钮,我向下滚动,我看到几个按钮的背景图像改变了,而改变背景的按钮位置改变了,同时再次滚动列表视图; 我该如何解决?
我的列表视图内容的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<Button
android:id="@+id/bt_rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:background="@android:drawable/btn_star_big_off"
android:onClick="myClickHandler"/>
<TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/fsinlistview"
/>
</LinearLayout>
我的按钮点击代码为:
public void myClickHandler(View v)
{
Button button = (Button)v.findViewById(R.id.bt_rating);
button.setBackgroundResource(android.R.drawable.btn_star_big_on);
}
答案 0 :(得分:0)
您正在使用R.id.bt_rating
ID为所有按钮指定后台资源,您可以在其中修改点击的按钮。
您已经有了对它的引用 - 它是传入的View
。
将您的代码更改为:
public void myClickHandler(View v)
{
v.setBackgroundResource(android.R.drawable.btn_star_big_on);
}
当然,由于您正在使用列表视图,因此一旦您滚动浏览/通过此列表视图,它将不会保持状态。你应该做的是:
notifyDataSetChanged
getView
答案 1 :(得分:0)
将setOnclickListener放在适配器的getView方法中