私は持っていListView
ます。ImageView
ListView の行に があります。ImageView に onClick 属性をアタッチしました。私の onClick 関数は
public void alarmClick(View v)
{
ImageView bell = (ImageView)v.findViewById(R.id.mEventImage);
bell.setImageResource(R.drawable.bell_on);
if(bell.getTag() == null)
{
bell.setImageResource(R.drawable.bell_on);
bell.setTag(R.drawable.bell_on);
}
else if((Integer)bell.getTag() == R.drawable.bell_on)
{
bell.setImageResource(R.drawable.bell_off);
bell.setTag(R.drawable.bell_off);
}
else
{
bell.setImageResource(R.drawable.bell_on);
bell.setTag(R.drawable.bell_on);
}
}
ImageView
ソースを切り替えようとしていますが、その時点で画面に表示されていないImageView
他の多くの行をクリックすると切り替えられます。ImageView
これは、ビューが で再利用されるためである可能性がありますListView
。一意の行ごとに行う方法の提案。
アダプタ クラス
package com.example.drawer;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class EventAdapter extends ArrayAdapter<EventList> {
Context context;
ArrayList<EventList> data;
int layoutResourceId;
public EventAdapter(Context context, int textViewResourceId, ArrayList<EventList> data) {
super(context, textViewResourceId, data);
this.context = context;
this.data = data;
this.layoutResourceId = textViewResourceId;
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
EventHolder holder = null;
if(row == null)
{
LayoutInflater inflator = ((Activity)context).getLayoutInflater();
row = inflator.inflate(layoutResourceId, parent, false);
holder = new EventHolder();
holder.coord = (TextView)row.findViewById(R.id.eventCoor);
holder.icon = (ImageView)row.findViewById(R.id.icon);
holder.eventName = (TextView)row.findViewById(R.id.eventNam);
holder.location = (TextView)row.findViewById(R.id.eventLoc);
holder.time = (TextView)row.findViewById(R.id.eventTime);
row.setTag(holder);
}
else
{
holder = (EventHolder)row.getTag();
}
EventList listItem = data.get(position);
ImageHelper imageHelper = new ImageHelper();
Bitmap icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ipl);
Bitmap newIcon = imageHelper.getRoundedCornerBitmap(icon, 200);
holder.coord.setText(listItem.coord);
holder.eventName.setText(listItem.eventName);
holder.location.setText(listItem.location);
holder.time.setText(listItem.time);
holder.icon.setImageBitmap(newIcon);
holder.id = listItem.id;
holder.day = listItem.day;
//Log.d("ListView", "Executed");
return row;
}
static class EventHolder
{
ImageView icon;
TextView eventName;
TextView location;
TextView time;
TextView coord;
int id;
int day;
}
}