Я относительно новичок в использовании фрагментов и затрудняюсь выяснить, как перезагрузить мой список, который был инициализирован в 'BaseFragment
', в то время как im в 'FragmentActivity
' Я использую загрузчик изображений Universial с помощью listview и корректно работать в моем проекте, мне просто нужно выяснить, как его перезагрузить, не перезагружая всю деятельность.Обновить список через фрагменты
вот мой Basefragment, где я считаю, что ListView сначала инициализируется:
public class ImageListFragment extends AbsListViewBaseFragment {
public static final int INDEX = 0;
String[] imageUrls = Constants2photo.IMAGES.toArray(new String[Constants2photo.IMAGES.size()]);
DisplayImageOptions options;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.displayer(new RoundedBitmapDisplayer(20))
.build();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fr_image_list, container, false);
listView = (ListView) rootView.findViewById(R.id.lister);
((ListView) listView).setAdapter(new ImageAdapter());
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
startImagePagerActivity(position);
}
});
return rootView;
}
...
А вот мой фрагмент активности OnCreate:
@Override общественного недействительными OnCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState);
int frIndex = getIntent().getIntExtra(Constants2photo.Extra.FRAGMENT_INDEX, 0);
Fragment fr;
String tag;
int titleRes;
switch (frIndex) {
default:
case ImageListFragment.INDEX:
tag = ImageListFragment.class.getSimpleName();
fr = getSupportFragmentManager().findFragmentByTag(tag);
if (fr == null) {
fr = new ImageListFragment();
}
titleRes = R.string.ac_name_image_list;
break;
case ImagePagerFragment.INDEX:
tag = ImagePagerFragment.class.getSimpleName();
fr = getSupportFragmentManager().findFragmentByTag(tag);
if (fr == null) {
fr = new ImagePagerFragment();
fr.setArguments(getIntent().getExtras());
}
titleRes = R.string.ac_name_image_pager;
break;
}
setTitle(titleRes);
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, fr, tag).commit();
}
EDIT
Изображение класса адаптера:
class ImageAdapter extends BaseAdapter {
private LayoutInflater inflater;
private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
ImageAdapter() {
inflater = LayoutInflater.from(getActivity());
}
@Override
public int getCount() {
return imageUrls.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
final ViewHolder holder;
if (convertView == null) {
view = inflater.inflate(R.layout.item_list_image, parent, false);
holder = new ViewHolder();
holder.text = (TextView) view.findViewById(R.id.text);
holder.image = (ImageView) view.findViewById(R.id.image);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.text.setText("Item " + (position + 1));
ImageLoader.getInstance().displayImage(imageUrls[position], holder.image, options, animateFirstListener);
return view;
}
}
Так как же я перезагружать ListView из фрагмента деятельности? дайте мне знать, если мне нужно опубликовать больше кода, действительно застрял на этом.
я получаю 'не могу метод разрешения notifyDataSetChanged() 'в базовом фрагменте – BluGeni
См. мой отредактированный ответ. Попробуй это. – Rohit5k2
В каком классе расширяется класс 'ImageAdapter'? – Rohit5k2