Passer objet dans une autre activité (inttn) au clique sur une liste d'un fragment
Bonjour communauté ! J'ai une listFragment où j'affiche des données que je recupere sur internet !
Le soucis est que je voudrais passer l'objet cliqué de la liste dans une autre activité grace aux intents!
a noter que j'ai deja vu qu'il faut que mon objet implemente l'interface Serializable chose deja fait !
Voici le code de ma list Fragment et son adapter !
ListFragment :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
| package com.bwangroup.christevents.app.fragment;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonObjectRequest;
import com.bwangroup.christevents.R;
import com.bwangroup.christevents.app.activities.DetailsEventsActivity;
import com.bwangroup.christevents.app.adapter.CustomListEventsAdapter;
import com.bwangroup.christevents.app.model.Event;
import com.bwangroup.christevents.app.util.AppController;
import com.github.rahatarmanahmed.cpv.CircularProgressView;
import com.squareup.picasso.Picasso;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class AllConcertFragment extends ListFragment {
ProgressDialog progressDialog;
CircularProgressView circularProgressView;
private boolean loaded = false;
List<Event> eventLists = new ArrayList<>();
CustomListEventsAdapter customListEventsAdapter;
// instance of the fragment
public static AllConcertFragment newInstance() {
AllConcertFragment fragment = new AllConcertFragment();
return fragment;
}
public interface AllConcertFragmentListener {
void onItemEventClicked(Event event);
}
private ListView listView;
AllConcertFragmentListener allConcertFragmentListener;
// This constructor
public AllConcertFragment() {
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof AllConcertFragmentListener) {
allConcertFragmentListener = (AllConcertFragmentListener) context;
}
}
@Override
public void onDetach() {
super.onDetach();
allConcertFragmentListener = null;
}
// Request to inflate a view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.list_fragment, container, false);
circularProgressView = (CircularProgressView) view.findViewById(R.id.progress_event);
return view;
}
// If the view is created
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
// When activity is created
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
progressDialog = new ProgressDialog(getActivity()) ;
progressDialog.setCancelable ( false ) ;
progressDialog.setMessage ( "Retrieving data..." ) ;
progressDialog.setTitle ( "Please wait" ) ;
progressDialog.setIndeterminate(true) ;
circularProgressView.startAnimation();
if(loaded){
return;
}
loaded = true;
// get list vew
listView = getListView();
// set list view adpater
customListEventsAdapter = new CustomListEventsAdapter(getActivity(), eventLists);
listView.setAdapter(customListEventsAdapter);
// json get informations
JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET,
URL_ALL_CONFERENCES,
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
VolleyLog.d("Resultats ----> ", "Response: " + response.toString());
if (response != null) {
parseJsonFeed(response);// notify data changes to list adapater
customListEventsAdapter.notifyDataSetChanged();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Resultats ----> ", "Error: " + error.getMessage());
//progressBar.setVisibility(View.GONE);
}
});
// Adding request to volley request queue
AppController.getInstance().addToRequestQueue(jsonReq);
// set the listener of the click event
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getActivity(), DetailsEventsActivity.class);
startActivity(intent);
}
});
}
/**
* Parsing json reponse and passing the data to event view list adapter
**/
private void parseJsonFeed(JSONObject response) {
try {
JSONArray eventArray = response.getJSONArray("events");
for (int i = 0; i < eventArray.length(); i++) {
JSONObject eventObj = (JSONObject) eventArray.get(i);
Event evt = new Event();
evt.setPriceEvent(eventObj.getString("event_price"));
// Image might be null sometimes
String image = eventObj.isNull("event_thumb") ? null : eventObj.getString("event_thumb");
image = image.replace("..", "http://7avecdieu.org");
//Picasso.with(getContext()).load(image).into(imV);
evt.setThumbEvent(image);
evt.setNameEvent(eventObj.getString("event_name"));
evt.setPlaceEvent(eventObj.getString("event_place"));
evt.setHourEvent(eventObj.getString("event_hour"));
evt.setDateEvent(eventObj.getString("event_date"));
eventLists.add(evt);
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
} |
L'adapter de la liste :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| package com.bwangroup.christevents.app.adapter;
import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import com.bwangroup.christevents.R;
import com.bwangroup.christevents.app.model.Event;
import com.bwangroup.christevents.app.util.AppController;
import com.bwangroup.christevents.app.util.ReziseTransformation;
import com.squareup.picasso.Picasso;
import java.util.List;
public class CustomListEventsAdapter extends BaseAdapter {
private Activity activity;
private Context context;
private LayoutInflater layoutInflater;
private List<Event> eventItems;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
public CustomListEventsAdapter(Activity activity, List<Event> eventItems) {
this.activity = activity;
this.eventItems = eventItems;
}
@Override
public int getCount() {
return eventItems.size();
}
@Override
public Object getItem(int position) {
return eventItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (layoutInflater == null) {
layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_item_event, parent, false);
}
if (imageLoader == null) {
imageLoader = AppController.getInstance().getImageLoader();
}
// Get image form tree views
ImageView imageViewEventThumbnail = (ImageView) convertView.findViewById(R.id.event_pic);
TextView date = (TextView) convertView.findViewById(R.id.event_date);
TextView name = (TextView) convertView.findViewById(R.id.event_name);
TextView price = (TextView) convertView.findViewById(R.id.event_price);
TextView country = (TextView) convertView.findViewById(R.id.event_country);
TextView place = (TextView) convertView.findViewById(R.id.event_place);
TextView type = (TextView) convertView.findViewById(R.id.event_type);
TextView hour = (TextView) convertView.findViewById(R.id.event_hour);
// Getting event data for row
Event event = eventItems.get(position);
// Pic Event
//imageViewEventThumbnail.setImageUrl(event.getThumbEvent(), imageLoader);
//imageViewEventThumbnail.setImageURI();
Picasso.with(imageViewEventThumbnail.getContext()).load(event.getThumbEvent()).centerCrop().fit().into(imageViewEventThumbnail);
imageViewEventThumbnail.setImageURI(Uri.parse(event.getThumbEvent()));
// hour
hour.setText("Heure : " + event.getHourEvent());
// date
date.setText("Date : " + event.getDateEvent());
// name
name.setText(event.getNameEvent());
name.setTextSize(18);
// Price
price.setText(event.getPriceEvent() + " Fcfa");
// Country
country.setText(event.getCountryEvent());
// Place
place.setText("Lieu : " + event.getPlaceEvent());
// Type
type.setText(event.getTypeEvent());
// return view
return convertView;
}
} |
Je bloque au niveau du passage dans l'evenement au clique d'un item de la liste (setOnItemClickListener)
et si il ya un autre moyen de faire passer l'objet, je suis partant !
merci d'avance !