return 从适配器更改了 arrayList android
return Changed arrayList from adapter android
有 gridview,其设置适配器名为 ImageAdapter,参数为 arraylist。适配器内部有 onclicklistener,在此期间从 arraylist 中删除了一项,然后当我在 gridview 项目中使用此行时 ImageAdapter.notifyDataSetChanged
被删除。现在我需要在我的 activity 中更改 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;
} }
片段代码:
ImageAdapter mainActivityAdapter = new ImageAdapter(getActivity(), ar1);
gridview_withimage.setAdapter(mainActivityAdapter);
问题:如何将更改后的数组列表从 ImageAdapter 更改为调用的 Fragement
How to get changed arraylist from ImageAdapter to called Fragement
在 ImageAdapter
中创建一个方法,它将 return ArrayList 用作适配器中的数据源:
public ArrayList<String> getModifyList() {
return listCheck;
}
在 Fragment 中调用 getModifyList
方法以使用 Adapter 对象获取 ArrayList:
gridview_withimage.setAdapter(mainActivityAdapter);
gridview_withimage.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
ArrayList<String> arrNewList=mainActivityAdapter.getModifyList();
}
}, 100);
您可以将 Fragment 实例传递给 Adapter。
private Fragment fragment;
public ImageAdapter(Context context, ArrayList<String> list,Fragment mfragment) {
this.context = context;
listCheck = list;
this.fragment=mfragment;
}
并在您的片段中创建一个 public 方法并使用此片段片段实例进行调用;
你可以像这样创建一个界面
public interface ImageAdapterListener{
void onListChange(List<String> list);
}
并在ImageAdapter
中声明一个成员
private ImageAdapterListener listener;
public setListener(ImageAdapterListener listener){
this.listener = listener}
覆盖 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
}
}
有 gridview,其设置适配器名为 ImageAdapter,参数为 arraylist。适配器内部有 onclicklistener,在此期间从 arraylist 中删除了一项,然后当我在 gridview 项目中使用此行时 ImageAdapter.notifyDataSetChanged
被删除。现在我需要在我的 activity 中更改 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;
} }
片段代码:
ImageAdapter mainActivityAdapter = new ImageAdapter(getActivity(), ar1);
gridview_withimage.setAdapter(mainActivityAdapter);
问题:如何将更改后的数组列表从 ImageAdapter 更改为调用的 Fragement
How to get changed arraylist from ImageAdapter to called Fragement
在 ImageAdapter
中创建一个方法,它将 return ArrayList 用作适配器中的数据源:
public ArrayList<String> getModifyList() {
return listCheck;
}
在 Fragment 中调用 getModifyList
方法以使用 Adapter 对象获取 ArrayList:
gridview_withimage.setAdapter(mainActivityAdapter);
gridview_withimage.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
ArrayList<String> arrNewList=mainActivityAdapter.getModifyList();
}
}, 100);
您可以将 Fragment 实例传递给 Adapter。
private Fragment fragment;
public ImageAdapter(Context context, ArrayList<String> list,Fragment mfragment) {
this.context = context;
listCheck = list;
this.fragment=mfragment;
}
并在您的片段中创建一个 public 方法并使用此片段片段实例进行调用;
你可以像这样创建一个界面
public interface ImageAdapterListener{
void onListChange(List<String> list);
}
并在ImageAdapter
private ImageAdapterListener listener;
public setListener(ImageAdapterListener listener){
this.listener = listener}
覆盖 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
}
}