2015-05-14 13 views
1

我有一个CustomBase适配器与一个按钮连接到它,当我点击按钮行将被删除,这是工作完全正常,但我的问题是,数据是在我的适配器中填充来自远程服务器,我希望在删除适配器并将其提供给我的MainActivity之前获取适配器中包含的信息,在我的情况下,我希望在删除视图并发送之前获取标题它告诉服务器,告诉它将它从存储中删除,最大的问题是所有使用按钮的代码都在我的baseAdapter类中,我不知道在行被删除之前是否可以给我的MainActivity数据,我不能想想一个实现的方法,如果有人有一个想法请分享,下面是我的Base Adapter。获取BaseAdapter的适配器信息之前删除

public class CartAdapter extends BaseAdapter{ 


private ArrayList<ListItem> listData; 
private LayoutInflater layoutInflater; 
ViewHolder holder; 
public CartAdapter(Context context, ArrayList<ListItem> listData) { 
    this.listData = listData; 
    notifyDataSetChanged(); 
    layoutInflater = LayoutInflater.from(context); 
} 
@Override 
public void notifyDataSetChanged() { 
    super.notifyDataSetChanged(); 
} 

@Override 
public int getCount() { 
    return listData.size(); 
} 

@Override 
public Object getItem(int position) { 
    return listData.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

public View getView(final int position, View convertView, ViewGroup parent) { 






    if (convertView == null) { 
     convertView = layoutInflater.inflate(R.layout.singlecartitem, null); 
     holder = new ViewHolder(); 
     holder.title = (TextView) convertView.findViewById(R.id.title); 
     final ImageButton delete = (ImageButton) convertView.findViewById(R.id.delete); 
     convertView.findViewById(R.id.postCommentBox); 

     delete.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       listData.remove(position); 
       notifyDataSetChanged(); 


      } 
     }); 
     convertView.setTag(holder); 
     delete.setTag(holder); 

    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    final ListItem newsItem = listData.get(position); 
    holder.title.setText(newsItem.getTitle()); 



    return convertView; 
} 


static class ViewHolder { 
    TextView title; 
    int position; 


} 

}

回答

0

您使用的是ListFragment?如果你这样做,检查 this了。

如果您不这样做,请将您的活动实施为界面HandleDeletion用方法例如handleTitle(String title)。在您的clickListener中,将上下文对象转换为HandleDeletion并调用其上的方法handleTitle(String title)。这是所谓的回调。

[编辑] 例:

public interface HandleDeletion { 
    handleTitle(String title); 
} 

public class MyActivity implements HandleDeletion { 
    ... 
    handleTitle(String title) { 
     //do whatever you want 
    } 
    ... 
} 


public class CartAdapter extends BaseAdapter{ 
    ... 

    private Context context; 

    public CartAdapter(Context context, ArrayList<ListItem> listData) { 
     this.listData = listData; 
     this.context = context; 
     notifyDataSetChanged(); 
     layoutInflater = LayoutInflater.from(context); 
    } 

    public View getView(final int position, View convertView, ViewGroup parent) { 
    ... 

    delete.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ((HandleDeletion)context).handleTitle(listData.get(position).getTitle()); 
       listData.remove(position); 
       notifyDataSetChanged(); 


      } 
     }); 
    ... 
    } 
    ... 
} 
+0

谢谢你,让我试试,制定出来的东西,但如果你有一个例子,请分享 – Chrome