Mon projet a une activité résultatactivité.java p> Je veux envoyer et utiliser VOYAGEADAPTER.JAVA P> code> nommée résultantactivity.java code> et un adaptateur code> nommé VoyageAdapter.java code>. Il y a une chaîne String code> dans résultantes code>, et je souhaite envoyer ce chaîne code> à VOYAGEADAPTER.JAVA code>. Comment faire cela? string code> dans cette partie de VoyageAdapter.java Code> P> public abstract class MyBaseVoyageFragment extends Fragment {
protected String owner;
protected View fragmentView;
protected String fBus;
protected RecyclerView mRecyclerView;
protected VoyageAdapter voyageAdapter;
protected RecyclerView.LayoutManager mLayoutManager;
protected ArrayList<Voyage> voyageList;
protected View errorView;
public String BROADCAST_TAG = "com.bss.voyage";
protected int direction = MyConstants.DIRECTION_GOING;
ParseIntentDataAndLoadVoyagesAdapter
parseIntentDataAndLoadVoyagesAdapter;
protected void init(String owner, int direction) {
mRecyclerView = fragmentView.findViewById(R.id.my_recycler_view);
mLayoutManager = new LinearLayoutManager(getContext());
mRecyclerView.setLayoutManager(mLayoutManager);
this.owner = owner;
}
void loadVoyagesToAdapter() {
if (voyageAdapter == null) {
voyageAdapter = new VoyageAdapter(getActivity(), voyageList, fBus, mRecyclerView);
fBus="none";
Log.v(fBus, "FRAGMENT BUS");
mRecyclerView.setAdapter(voyageAdapter);
} else {
voyageAdapter.updateList(voyageList); // sonraki güne geçtiÄimde yeni bir voyageadapter oluÅturmuyorum.
}
if (voyageList.size() < 1 ) {
setErrorView(MyConstants.ERROR_NO_VOYAGE);
}
}
private class ParseIntentDataAndLoadVoyagesAdapter extends AsyncTask<String, Void, String> {
Intent intent;
public ParseIntentDataAndLoadVoyagesAdapter(Intent intent) {
this.intent = intent;
}
@Override
protected String doInBackground(String... params) {
if (isCancelled()) return "";
try {
JSONArray jsonArray = new JSONArray(intent.getStringExtra("data"));
voyageList = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
voyageList.add(Voyage.setJsonToClass(jsonArray.getJSONObject(i), direction, owner));
}
} catch (JSONException e) {
Log.e("getIntent", e.toString());
e.printStackTrace();
}
return "";
}
}
5 Réponses :
essayez ceci strong> dans votre adaptateur, faites un constructeur avec une valeur de chaîne. p>
J'ai déjà ce code: Public Voyageadapter (contexte _Context, liste
@Skullylaykutzz ajoutez alors un argument de chaîne supplémentaire à ce constructeur et c'est fait.
J'ai fait comme ça. Mais il vient null code> maintenant dans this.fbus code>.
Le problème que j'ai une autre classe qui est basefragment code> pour cet adaptateur. Il vient null code> à cette classe. Alors, puis j'obtiens null code> dans la classe d'adaptateur.
Vous pouvez créer une méthode publique dans votre adaptateur et l'appeler pour définir la valeur de chaîne (comme n'importe quel autre setter) p>
De plus, si cette valeur de chaîne est déterminée avant de créer un adaptateur, vous pouvez le définir via le constructeur de l'adaptateur. P>
Vous avez deux options simples, créez d'abord un enregistreur pour cette chaîne dans l'adaptateur et appelez ce réglage de votre activité ou mettez cette valeur dans votre constructeur qui dépend de votre valeur de chaîne est déterminée avant de créer un adaptateur ou après que P>
Vous devez ajouter au constructeur
C'est un très simple à transmettre une valeur de chaîne de l'activité à l'adaptateur. Créez une classe d'adaptateur Constructeur paramétré pour passer la valeur de la chaîne
Context context;
String dataValue;
public TodayAdapter(Context context, String dataValue) {
this.context = context;
this.dataValue = dataValue;
}