Fragment mit Image aktualisieren

  • Antworten:1
Rackor
  • Forum-Beiträge: 19

11.11.2013, 19:20:48 via Website

Hallo, habe folgendes Problem.
Habe nen viewpager mit Fragmenten(je mit einem bild)...beim starten der activity werden die URLs der einzelnen, auf einem webserver gespeicherten bilder, geholt und je ein Default Fragment erzeugt..anschließend werden die einzelnen bilder geladen und sollen angezeigt werden bzw dynamisch nachgeladen werden..soweit so gut
momentan funktioniert es zwar, aber noch nicht so ganz...wenn man auf einem Default Fragment ist, wird das bild leider nicht automatisch geladen...sondern erst bei recreate des fragments..hatte gehofft das sollte per Pager.notifyDataSetChanged funktionieren...irgendwelche Ideen?

[code]
public class UserProfilePub_viewpager extends FragmentActivity {
UserProfilePub_viewpager actRef = this;
Bitmap profilePic;
int pos;
static String picturePath=null;
int index;
final static int RESULT_LOAD_IMAGE = 2;
//private static int NUM_PAGES = 3;
private ViewPager mPager;
private PagerAdapter mPagerAdapter;

ImageView imgView;

ArrayList<Fragment> fragments = new ArrayList<Fragment>();
ArrayList<Bitmap> pics = new ArrayList<Bitmap>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_layout_activity);

Intent intent = getIntent();
String USID = intent.getExtras().getString("USID");
profilePic = intent.getExtras().getParcelable("profilePic");
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
nameValuePair.add(new BasicNameValuePair("USID", USID));

UserProfilePub_getImageUrl upp_getImageUrls = new UserProfilePub_getImageUrl(nameValuePair, url, null, this);
upp_getImageUrls.execute();
Button button1 = (Button) findViewById(R.id.btn_viewpager_newPic);
button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, RESULT_LOAD_IMAGE);
}

});

fragments.add(new ScreenSlidePageFragment().newInstance(profilePic, true, pics, 0)); mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager(), fragments);
mPager.setAdapter(mPagerAdapter);

}

// UserProfilePub_getImageUrl - Asynctask ruft folgende Methode auf:

public void savePicUrls(String result){
String[] urls = result.toString().split(",");

for(int i=0; i<urls.length; i++){
fragments.add(new ScreenSlidePageFragment().newInstance(profilePic, false, pics, fragments.size()));
mPagerAdapter.notifyDataSetChanged();
}

for(int i=0; i<urls.length; i++){
ImageView imgView = (ImageView) findViewById(R.id.up_pub_iv_viewpager);
List_getImage test = new List_getImage(imgView, urls[i], null, this);
test.execute();
}
}

// List_getImage test - Asynctask ruft folgende Methode auf:

public void setPic(Bitmap bitmap){
pics.add(bitmap);
mPagerAdapter.notifyDataSetChanged();
}

public void savePic(Bitmap bitmap){
pics.add(bitmap);
index = fragments.size();
fragments.add(new ScreenSlidePageFragment().newInstance(profilePic, false, pics, index));
mPagerAdapter.notifyDataSetChanged();
mPager.setCurrentItem(fragments.size());
}

public void onBackPressed(){
if(mPager.getCurrentItem() == 0){
super.onBackPressed();
}else{
mPager.setCurrentItem(mPager.getCurrentItem() - 1);
}
}

public static class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter{
ArrayList<Bitmap> pics;
ArrayList<Fragment> fragments;
Bitmap profilePic;
int pos;
public ScreenSlidePagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) {
super(fm);
this.fragments = fragments;
this.pics = pics;
this.profilePic = profilePic;
this.pos = pos;

}
@Override
public Fragment getItem(int pos){
return this.fragments.get(pos);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return this.fragments.size();
//return urls.length;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.user_profile_pub_viewpager, menu);
return true;
}

protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);

int RESULT_LOAD_IMAGE = 2;

if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data){

Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};

Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
picturePath = cursor.getString(columnIndex);
cursor.close();

//fragments.add(new ScreenSlidePageFragment().newInstance(profilePic, pics, 1));



decodeBitmap decBit = new decodeBitmap(picturePath, null, actRef, 0);
decBit.execute();

uploadImage upImage = new uploadImage(picturePath, url1);
upImage.execute();

Log.e("test", "test");
}

}
}
}
 
 
 
 
 
public class ScreenSlidePageFragment extends Fragment{
final static int RESULT_LOAD_IMAGE = 2;
ArrayList<String> test = new ArrayList<String>();
Bitmap profilePic;
ImageView imgView;
UserProfilePub_viewpager actRef;
Bitmap bitmap;
int pos;
ArrayList<Bitmap> bitmaps;
ArrayList<Fragment> fragments;
boolean ProfilePicCheck;
int index;

public ScreenSlidePageFragment newInstance(Bitmap profilePic, boolean ProfilePicCheck, ArrayList<Bitmap> bitmaps, int pos){
this.bitmaps = bitmaps;
this.profilePic = profilePic;
this.pos = pos;
this.ProfilePicCheck = ProfilePicCheck;
ScreenSlidePageFragment f = new ScreenSlidePageFragment();
Bundle bdl = new Bundle();
bdl.putParcelableArrayList("profilePics", bitmaps);
bdl.putInt("pos", pos);
bdl.putBoolean("check", ProfilePicCheck);
bdl.putParcelable("profilePic", profilePic);
f.setArguments(bdl);
return f;
}

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_screen_slide_page, container, false);
imgView = (ImageView) rootView.findViewById(R.id.up_pub_iv_viewpager);
if(getArguments().getBoolean("check")){
imgView.setImageBitmap((Bitmap) getArguments().getParcelable("profilePic"));
}else{
bitmaps = getArguments().getParcelableArrayList("profilePics");
index = getArguments().getInt("pos") -1;
if(bitmaps != null && bitmaps.size() != 0){
imgView.setImageBitmap((Bitmap) bitmaps.get(index));
}
}
return rootView;
}
}
[/code]

— geändert am 11.11.2013, 19:21:12

Antworten
Fabian Simon
  • Forum-Beiträge: 359

15.11.2013, 15:37:24 via Website

Schau mal das der code auch im Codeblock design angezeigt wird so sieht man ja nichts :)

Mac Systems

Antworten