我希望以下内容有道理......
我有A级,它执行以下操作:
A类
public class a extends fragment {
private List<AllUserAdoptIdsData> dataListAdoptIds;
public View onCreateView(.... {
dataListAdoptIds = new ArrayList<>();
populateAdoptIdsData("a");
}
public void populateAdoptIdsData(final String email) {
dataListAdoptIds.clear();
AsyncTask<Object,Void,Void> task = new AsyncTask<Object, Void, Void>() {
@Override
protected Void doInBackground(Object... params) {
String email = (String)params[0];
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://localhost/app_scripts/getUserAdoptPostIds2.php?email="+email )
.build();
try {
Response response = client.newCall(request).execute();
JSONArray array = new JSONArray(response.body().string());
for (int i=0; i<array.length(); i++){
JSONObject object = array.getJSONObject(i);
AllUserAdoptIdsData data = new AllUserAdoptIdsData(
object.getInt("ADOPT_ID")
);
dataListAdoptIds.add(data);
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
System.out.println("End of content"+e);
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
adapter.notifyDataSetChanged();
}
};
task.execute(email);
}
}
AllUserAdoptIdsData
package com.example.admin.paws;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
public class AllUserAdoptIdsData {
public int adopt_id;
private List<Integer> list;
public AllUserAdoptIdsData(int adopt_id)
{
list = new ArrayList<Integer>();
list.add(adopt_id);
this.adopt_id = adopt_id;
Log.d("LOG", "AllUserAdoptIdsData: "+list.size());
}
public int getId() {
return adopt_id;
}
public List<Integer> getList() {
return list;
}
}
现在我有了B类,我希望在A类中添加到AllUserAdoptIdsData的值。正如您所看到的,我尝试按照此链接(Java - How to access an ArrayList of another class?),但显然每次都 启动AllUserAdoptIdsData,它会创建一个新数组。不知道我哪里出错了。
B类
public class B extends Fragment {
public View onCreateView(....{
//Here I'm trying to see if the list contains a specific value.
AllUserAdoptIdsData allUserAdoptIdsData;
allUserAdoptIdsData = new AllUserAdoptIdsData(0);
List<Integer> list = allUserAdoptIdsData.getList();
Log.d("LOG", "lookupAdoptId: "+list.contains(209));
}
答案 0 :(得分:0)
...但显然每次启动AllUserAdoptIdsData时都会创建一个新数组。
那是因为你每次打电话时都会实例化
AllUserAdoptIdsData allUserAdoptIdsData;
allUserAdoptIdsData = new AllUserAdoptIdsData(0);
要从不同的类(尤其是不同的Fragments
)访问数组(列表)的内容,您需要考虑在不同的Activities/Fragments
之间提供此数据的方法(请参阅此{{3 }})。
也不要混淆Array和(Array)List!
答案 1 :(得分:0)
看到你使用Model类创建了一个自定义列表。请理解以下几点