2015-05-14 48 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