私のプロジェクトでは、それぞれが画像を含むリストアイテムで構成されるリストビューがあります。これで、特定のリストアイテムをクリックすると、そのアイテムに関する新しいアクティビティが開き、3つのボタンがあります。クリックされたボタンに応じて、その特定のリストアイテムの画像が変更されます。各リストアイテムはデータベースの特定の行に関連付けられています。特定のボタンのクリックを認識し、リストアイテムで画像ビューを直接変更する方法を知りたいと思いました。
私のカスタムアダプタのgetView()メソッドは次のとおりです
public class SpecialAdapter extends SimpleCursorAdapter{
private EventDBAdapter dbHelper;
@SuppressWarnings("deprecation")
public SpecialAdapter(Context context, int layout, Cursor c, String[] from,
int[] to, int i) {
super(context, layout, c, from, to);
// TODO Auto-generated constructor stub
}
private int[] colors = new int[] { 0xAAFFFFF, 0xAAc0c0c0 };
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = super.getView(position, convertView, parent);
int colorPos = position % colors.length;
view.setBackgroundColor(colors[colorPos]);
return view;
}
}
このビューから各リストアイテムが膨らみます
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="5dp"
>
<View
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_toLeftOf="@+id/tvListTitle"
android:paddingLeft="10dp"
android:background="#CC3232"/>
<TextView
android:id="@+id/tvListTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_marginTop="10dp"
android:textColor="#108070"
android:text="Title in list"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/tvListTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="00:00 to 00:00"
android:layout_below="@+id/tvListTitle"
android:textColor="#138F6A"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/tvListWhere"
android:layout_width="wrap_content"
android:layout_below="@+id/tvListTime"
android:layout_height="wrap_content"
android:text="Crystal plaza , Andheri (West) . "
android:textColor="#138F6A"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/tvListDetails"
android:layout_width="250dp"
android:layout_below="@+id/tvListWhere"
android:layout_height="20dp"
android:text="This is gonna contain brief summary about the event"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/tvListDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="14th January"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/tvListDay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tvListDetails"
android:text="Monday"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/ivStatus"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_below="@+id/tvListWhere"
android:src="@drawable/yes" />
</RelativeLayout>