Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从android适配器返回已更改的arrayList_Java_Android_Gridview_Arraylist - Fatal编程技术网

Java 从android适配器返回已更改的arrayList

Java 从android适配器返回已更改的arrayList,java,android,gridview,arraylist,Java,Android,Gridview,Arraylist,具有gridview,为其设置名为ImageAdapter的适配器,参数为arraylist。在适配器内部有onclicklistener,在此期间从arraylist中删除一个项目,然后当我使用此行时,ImageAdapter.notifyDataSetChanged将删除gridview项目。现在我需要在我的活动中更改arrayList,因此如何才能获得它 这是我的密码: public class ImageAdapter extends BaseAdapter { Context cont

具有gridview,为其设置名为ImageAdapter的适配器,参数为arraylist。在适配器内部有onclicklistener,在此期间从arraylist中删除一个项目,然后当我使用此行时,
ImageAdapter.notifyDataSetChanged
将删除gridview项目。现在我需要在我的活动中更改arrayList,因此如何才能获得它

这是我的密码:

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; 
}       }
问题:如何将arraylist从ImageAdapter更改为Fragement

如何将arraylist从ImageAdapter更改为名为Fragement

ImageAdapter
中创建一个方法,该方法将返回用作适配器中数据源的ArrayList:

public ArrayList<String> getModifyList() {
    return listCheck; 
}
如何将arraylist从ImageAdapter更改为名为Fragement

ImageAdapter
中创建一个方法,该方法将返回用作适配器中数据源的ArrayList:

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

您可以将片段实例传递给适配器

private Fragment fragment;

public ImageAdapter(Context context, ArrayList<String> list,Fragment mfragment) { 
    this.context = context; 
    listCheck = list; 
    this.fragment=mfragment;
} 
私有片段;
公共ImageAdapter(上下文上下文、ArrayList列表、片段MFFragment){
this.context=上下文;
列表检查=列表;
这个.fragment=mfragment;
} 

并在片段中创建一个公共方法,并使用该片段实例调用

您可以将片段实例传递给适配器

private Fragment fragment;

public ImageAdapter(Context context, ArrayList<String> list,Fragment mfragment) { 
    this.context = context; 
    listCheck = list; 
    this.fragment=mfragment;
} 
私有片段;
公共ImageAdapter(上下文上下文、ArrayList列表、片段MFFragment){
this.context=上下文;
列表检查=列表;
这个.fragment=mfragment;
} 

并在片段中创建一个公共方法,并使用该片段实例调用

您可以创建这样的界面

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

@Override
void notifyDataSetChanged{
super.notifyDataSetChanged();
if(listener!= null) listener.onListChange(listCheck);
}
并使您的片段实现该接口

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
}
    }
类Myfragment扩展片段实现ImageAdapterListener{
ImageAdapter mainActivityAdapter=新的ImageAdapter(getActivity(),ar1);
gridview_with image.setAdapter(mainActivityAdapter);
mainActivityAdapter.setListener(此);
@凌驾
void onListChange(列表){
//做你的事
}
}

您可以创建这样的界面

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

@Override
void notifyDataSetChanged{
super.notifyDataSetChanged();
if(listener!= null) listener.onListChange(listCheck);
}
并使您的片段实现该接口

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
}
    }
类Myfragment扩展片段实现ImageAdapterListener{
ImageAdapter mainActivityAdapter=新的ImageAdapter(getActivity(),ar1);
gridview_with image.setAdapter(mainActivityAdapter);
mainActivityAdapter.setListener(此);
@凌驾
void onListChange(列表){
//做你的事
}
}

我已尝试过此操作,但我希望此函数返回arraylist onclick of clear buttonholder.close.setOnClickListener(new View.OnClickListener(){public void onclick(View arg1){listCheck.remove(position);adapter.notifyDataSetChanged();});单击“关闭”按钮后,listCheck值将从相应位置删除,然后如何将此更改的listCheck获取到我的片段?@Anitha:当您想在片段中获取更改的listCheck值时?调用setAdapter后,我需要更改的arraylist。我已尝试过此操作,但我希望此函数返回arraylist onclick of clearbuttonholder.close.setOnClickListener(新视图.OnClickListener(){public void onClick(视图arg1){listCheck.remove(位置);适配器.notifyDataSetChanged();}});单击“关闭”按钮后,listCheck值将从相应位置删除,那么如何将此更改的listCheck获取到我的片段?@Anitha:当您想在片段中获取更改的listCheck值时?调用setAdapter后,我需要更改的ArrayList,尽管它看起来既安全又简单,它会传递适配器中每次数据更改的列表吗?如果您总是在更新数据后调用notifyDataSetChanged,则为是,否则为否。这是一个旧答案,但我建议您应该检查recyclerview适配器的notify Methods Hanks,我使用了一个类似的解决方案,带有接口,但没有notifyDataSetChanged,只需点击按钮。虽然看起来安全且简单,但它会传递适配器中每次数据更改的列表吗?如果您总是在更新数据后调用notifyDataSetChanged,则为是,否则为否。这是一个古老的答案,但我建议您签出recyclerview适配器的notify MethodsHanks,我使用了一个类似的接口解决方案,但没有notifyDataSetChanged,只需单击按钮即可。