Anitha
Anitha

Reputation: 253

return Changed arrayList from adapter android

have gridview for which set adapter called ImageAdapter with parameter of arraylist. Inside the adapter have onclicklistener during which from the arraylist one item is removed and then when i use this line ImageAdapter.notifyDataSetChanged in the gridview item is removed. Now i need the changed arrayList in my activity so how can i get it.

Here's my code:

public class ImageAdapter extends BaseAdapter {
Context context;
ArrayList<String> listCheck = new ArrayList<String>(); 
ImageAdapter adapter = this;

    public ImageAdapter(Context context, ArrayList<String> list) { 
    this.context = context; 
    listCheck = list; 
}    
    @Override
public int getCount() {
    return listCheck.size();
}

    @Override
public Object getItem(int arg0) {
    return null; 
}

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

    @Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder121 holder;
    if (convertView == null) {
        convertView = LayoutInflater.from(context).inflate(         
        R.layout.item_gridmain, null);  
        holder = new ViewHolder121();
        holder.imageView = (ImageView) convertView
                    .findViewById(R.id.img_selected_image); 
       holder.close = (ImageButton) convertView
                    .findViewById(R.id.img_btn_cancel); 
        convertView.setTag(holder);     
}

        else { 
        holder = (ViewHolder121) convertView.getTag();
    } 
    holder.close.setOnClickListener(new View.OnClickListener() {    
    public void onClick(View arg1) {
                listCheck.remove(position);
                adapter.notifyDataSetChanged();
 }  
}); Bitmap bm = decodeSampledBitmapFromUri(listCheck.get(position), 220,
                220);   
holder.imageView.setImageBitmap(bm);    
        return convertView; 
}       }

Fragment code:

ImageAdapter mainActivityAdapter = new ImageAdapter(getActivity(), ar1);    
                 gridview_withimage.setAdapter(mainActivityAdapter);

question: How to get changed arraylist from ImageAdapter to called Fragement

Upvotes: 0

Views: 3760

Answers (3)

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132982

How to get changed arraylist from ImageAdapter to called Fragement

Create a method in ImageAdapter which will return ArrayList used as data-source in Adapter:

public ArrayList<String> getModifyList() {
    return listCheck; 
}

Call getModifyList method in Fragment for getting ArrayList using Adapter object:

gridview_withimage.setAdapter(mainActivityAdapter);
gridview_withimage.postDelayed(new Runnable() {

 @Override
  public void run() {
 // TODO Auto-generated method stub
    ArrayList<String> arrNewList=mainActivityAdapter.getModifyList();           
  }
 }, 100);

Upvotes: 6

bugraoral
bugraoral

Reputation: 2670

You can create an interface like this

public interface ImageAdapterListener{
    void onListChange(List<String> list);
}

And declare a member in ImageAdapter

private ImageAdapterListener listener;

public setListener(ImageAdapterListener listener){
this.listener = listener}

override the notifyDataSetChanged

@Override
void notifyDataSetChanged{
super.notifyDataSetChanged();
if(listener!= null) listener.onListChange(listCheck);
}

and make your fragment implement that interface.

class Myfragment extends Fragment implements ImageAdapterListener {
ImageAdapter mainActivityAdapter = new ImageAdapter(getActivity(), ar1);    
                 gridview_withimage.setAdapter(mainActivityAdapter);
mainActivityAdapter.setListener(this);

@Override 
void onListChange(List<String> list){
//do your stuff
}
    }

Upvotes: 0

droidd
droidd

Reputation: 1371

You can pass Fragment instance to Adapter.

private Fragment fragment;

public ImageAdapter(Context context, ArrayList<String> list,Fragment mfragment) { 
    this.context = context; 
    listCheck = list; 
    this.fragment=mfragment;
} 

and Make one public method in your fragment and call using this instance of Fragment fragment;

Upvotes: 0

Related Questions