【发布时间】:2014-08-22 20:00:09
【问题描述】:
代码sn-p
public void parsequery()
{
ParseQuery<ParseObject> query = ParseQuery.getQuery("Products");
query.whereEqualTo("StoreID", StoreID);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {
for(int j=0; j<array.size();j++){
ParseQuery<ParseObject> query1 = ParseQuery.getQuery("Products");
c = array.get(j);
Log.d("C",""+c);
query1.whereEqualTo("SubCategory", c);
query1.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects1, ParseException e) {
if (e == null) {
productList.clear();
Log.d("Inner LOOP",""+objects1.size());
for(int i=0; i<objects1.size();i++)
{
SingleRow temp1 = new SingleRow(objects1.get(i).getString("Name"),objects1.get(i).getString("Description"),objects1.get(i).getInt("Price"),objects1.get(i).getString("Store"),objects1.get(i).getObjectId(),1);
productList.add(temp1);
}
productList temp11 = new productList(productList);
productList1.add(temp11);
}else{
Log.d("score", "Error: " + e.getMessage());
}
}
});
}
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
for(int k =0; k<array.size();k++){
Log.d("ProductList22",""+productList1.get(k).getProductList());
ArrayList<SingleRow> temp2 = productList1.get(k).getProductList();
SubcategorySinglerow temp = new SubcategorySinglerow(array.get(k),temp2);
categoryList.add(temp);
bool=true;
}
myList.addHeaderView(header, null, false);
Log.d("categoryListAdapter", ""+categoryList);
listAdapter = new MyListAdapter(getActivity(), categoryList);
myList.setAdapter(listAdapter);
layout.setVisibility(View.GONE);
myList.setVisibility(View.VISIBLE);
}
}, 5000);
} else {
Log.d("score", "Error: " + e.getMessage());
}
}
});
}
我在这里传递值 productList1.get(k).getProductList();通过 productList 子类别单行类,我在每次 for 循环执行后清除它,因为我需要向它添加新值。因此,它最终为类 productList 中的每个 productList1 传递 productList 的值,因为 java 是按值传递的。有没有办法在java中通过引用传递值。我该如何解决我的问题。
【问题讨论】:
-
在java中一切都是
Pass-By-Value。甚至参考文献。 -
如果将对象传入方法中,可以在方法中进行修改
-
@TheLostMind 我知道 java 是 pass-by-value 。那么有没有其他方法可以设置我的数据。
-
@ScaryWombat:您不能“传递对象”,因为“对象”在 Java 中不是值。 Java 中没有“对象类型”——只有原始类型和引用类型。
-
@newacct 让我们将其改写为任何扩展非不可变对象的东西
标签: java android arraylist parse-platform pass-by-value