我正在制作一个个性化的画廊,每当我尝试从画廊加载图像时都会遇到问题(我调用另一个带有参数的活动以了解必须加载哪个图像)。问题是显示的图像不是应有的图像。我的问题是,如何跟踪图像所在的行?
我在 MainActivity 程序中创建我的画廊
public class MainActivity extends Activity {
ListView gallery;
ArrayList<Photo> row = new ArrayList<Photo>();
protected void onCreate(Bundle icicle){
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(icicle);
setContentView(R.layout.gallery);
gallery = (ListView) findViewById(R.id.lvdata);
init();
gallery.setAdapter(new PhotoAdapter(getBaseContext(), row));
}
然后我使用一个支架来跟踪我的图像(在 PhotoAdapter 类中):
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
positionAbs=position;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row_photo, null);
holder = new ViewHolder();
holder.iv1 = (ImageView) convertView.findViewById(R.id.iv1);
holder.iv2 = (ImageView) convertView.findViewById(R.id.iv2);
holder.iv3 = (ImageView) convertView.findViewById(R.id.iv3);
holder.iv4 = (ImageView) convertView.findViewById(R.id.iv4);
holder.row = position;
final int rowL=holder.row;
holder.iv1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
val=1;
loadIntent(calculaPos(rowL,val));
}
});
holder.iv2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
val=2;
loadIntent(calculaPos(rowL,val));
}
});
holder.iv3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
val=3;
loadIntent(calculaPos(rowL,val));
}
});
holder.iv4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
val=4;
loadIntent(calculaPos(rowL,val));
}
});
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.iv1.setImageResource(list.get(position).getIv1());
holder.iv2.setImageResource(list.get(position).getIv2());
holder.iv3.setImageResource(list.get(position).getIv3());
holder.iv4.setImageResource(list.get(position).getIv4());
pos1=list.get(position).getIv1();
pos2=list.get(position).getIv2();
pos3=list.get(position).getIv3();
pos4=list.get(position).getIv4();
return convertView;
}
我想知道是否有任何方法可以在创建新持有人时跟踪持有人的行号。
编辑我采取的方法是在我的画廊中添加一个监听器以了解何时被点击,如下所示:
gallery.setAdapter(new PhotoAdapter(getBaseContext(), row));
gallery.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)
{
System.out.println(">> column value is "+arg2);
//arg2 is the image position
}
});}
问题是,现在我无法访问我制作的适配器中的本地值(每行有 4 张照片),但我可以获取我正在单击的行(禁用 PhotoAdapter 中的 onClickListener)。有什么办法可以同时激活两个监听器?这样我就可以在我的主要活动类中获取图片的行和适配器类中的图片列。
谢谢阅读!