这样写的性能不知道会不会很差,当gallery拖动的时候,每次都要从sdcard中读入图片,最好加一层缓冲。 而且自然的写法应该是在Gallery的setOnclicklistener中实现点击操作: // Set a item click listener, and just Toast the clicked position g.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { Toast.makeText(Gallery1.this, "" + position, Toast.LENGTH_SHORT).show(); } }); 说一下怎么解决楼主的问题,可以在ImageAdapte里加一个public方法delCurrentPic(): void delCurrentPic() { lis.remove(position); } 然后在setOnClickListener的onClick方法中调用m_ImageAdapter.delCurrentPic();
我给你一个我写的按钮添加gallery图片的代码: 数据: Vector<Integer> ImageIDs; ImageView iv; BaseAdapter ba;onCreate()中进行数据初始化: ImageIDs=new Vector <Integer>(5,1); ImageIDs.add(R.drawable.demo_0); ImageIDs.add(R.drawable.demo_1); ImageIDs.add(R.drawable.demo_2); ImageIDs.add(R.drawable.demo_3); ImageIDs.add(R.drawable.add_card);安钮添加图片方法: public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.add_card: ImageIDs.add(R.drawable.new_card); ba.notifyDataSetChanged(); break;___________________ gallery与adapter的绑定: Gallery g1=(Gallery) this.findViewById(R.id.Gallery01); ba=new BaseAdapter() { @Override public int getCount() { // TODO Auto-generated method stub return ImageIDs.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; }
顺便我来说一下: 把把所有图片ID都放在一个Vector里面,然后点击删除时,就把那个图片ID从Vector中删除,同时让Vector的size减1,然后在gallery对应的adapter里面notifyDataSetChanged()一下子,就实现了。
而且自然的写法应该是在Gallery的setOnclicklistener中实现点击操作:
// Set a item click listener, and just Toast the clicked position
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
Toast.makeText(Gallery1.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
说一下怎么解决楼主的问题,可以在ImageAdapte里加一个public方法delCurrentPic():
void delCurrentPic() {
lis.remove(position);
}
然后在setOnClickListener的onClick方法中调用m_ImageAdapter.delCurrentPic();
数据:
Vector<Integer> ImageIDs;
ImageView iv;
BaseAdapter ba;onCreate()中进行数据初始化:
ImageIDs=new Vector <Integer>(5,1);
ImageIDs.add(R.drawable.demo_0);
ImageIDs.add(R.drawable.demo_1);
ImageIDs.add(R.drawable.demo_2);
ImageIDs.add(R.drawable.demo_3);
ImageIDs.add(R.drawable.add_card);安钮添加图片方法:
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.add_card:
ImageIDs.add(R.drawable.new_card);
ba.notifyDataSetChanged();
break;___________________
gallery与adapter的绑定:
Gallery g1=(Gallery) this.findViewById(R.id.Gallery01);
ba=new BaseAdapter() {
@Override
public int getCount() {
// TODO Auto-generated method stub
return ImageIDs.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
CurrentPosition=position;
Log.i("CurrentPosition", Integer.toString(position));
iv=new ImageView(Sample_5_8.this);
iv.setImageResource(ImageIDs.get(position));
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setLayoutParams(new Gallery.LayoutParams(188, 250));
return iv;
}
};
g1.setAdapter(ba); 我觉得删除可能和添加差不太多,主要是图片ID的数组的动态添加和删除,不太好弄吧~
可能要好好学一下vector向量的操作
void delCurrentPic() {
lis.remove(curBirmapID);
}在Gallery的setOnclicklistener中是这样写。
/* 设定一个itemclickListener事件 */
g.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
curBirmapID = position;
Toast.makeText(Testgallery.this, String.valueOf(curBirmapID), Toast.LENGTH_SHORT).show();
} });
lis.remove(curBirmapID);出错就是:
curBirmapID cannot be resolved
这样做是可以的。不知道刚才是什么问题,可能是eclipse的bug。我从新加载一下工程就好了。xjanker2谢谢你呀!