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;
}