我是Android和Java的新手,但是在Objective
C和iPhone编程方面确实有一些经验。我试图重新创建一个已经为iPhone设计的应用程序,并且陷入了应该是一个简单概念的困境。
在我的ParserHandler类中,我从服务器解析XML,并将数据放入三个单独的ArrayList中。解析似乎工作正常。当我登录并在ParserHandler.java类中遍历ArrayList时,一切正常。(List1.java类有一些字符串变量,我已经宣布它在ParserHandler像这样:private List1 theList = new List1();
)
for(int i = 0; i<dogArray.size(); i++){
theList = dogArray.get(i);
Log.i(TAG, "looping " + i + " " + theList.Name);
Log.i(TAG, "looping " + i + " " + theList.PhotoUrl);
Log.i(TAG, "looping " + i + " " + theList.Type);
}//this loops fine and has all the data
dogArray的声明是这样的:public ArrayList<List1> dogArray = new ArrayList<List1>();
现在,我想从DogListView.java类访问dogArray,因此在onCreate方法中尝试执行以下操作:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.dog_list_view);
ParserHandler ph = new ParserHandler();
int d = ph.getNumberofDogs();
int m = ph.dogArray.size();
Log.i(TAG, "dog size is:" + d + "and:" + m);}
我尝试了两种不同的方式,并且两种方式都始终在日志中返回“
0”。但是,始终记录正确的大小,并且当日志来自ParserHandler.java类时,所有数据都存在。
这是ParserHandler.java中的访问器方法。
public int getNumberofDogs(){
return dogArray.size();
}
我更喜欢通过accessor方法访问dogArray(因为这似乎是我收集的最佳实践),但是我愿意接受所有建议。
提前致谢!!
编辑8/23/12
最后,我宣布自己的问题解决了这个问题ArrayLists Static
。我知道这种(和public
)方法对于OOP来说并不理想,但我会继续使用它。在我的ParserHandler.java中,我声明了
public static ArrayList<List1> dogArray = null;
public static ArrayList<List1> otherArray = null;
public static ArrayList<List1> catArray = null;
然后开始我的SAX解析器:
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
if (qName.equalsIgnoreCase("ArrayOfDataFeedAnimal")){
catArray = new ArrayList<List1>();
dogArray = new ArrayList<List1>();
otherArray = new ArrayList<List1>();
}else if(qName.equalsIgnoreCase("DataFeedAnimal")){
theList = new List1();
}
然后其余的SAX解析工作就会发生。最后,无论我要访问数组的任何类,我都可以通过静态方式简单地做到这一点,ParserHandler.dogArray.size()
以获取数组的大小。现在,我可以根据需要从任何需要的类中以任何合适的方式操纵数组。
我仍然不清楚为什么创建ParserHandler类的实例对我的解析后的ArrayList来说不起作用,因为当我使用simple进行测试时,它工作得很好int[]
。
希望这可以在将来对其他人有所帮助。
再次感谢大家的反馈!
干杯!
您可以通过两种方式做到这一点,
第一种方法:
类名:myDataObject.java
private ArrayList myArrayList;
// setting the ArrayList Value
public void setArrayList ( ArrayList myArrayList )
{
this.myArrayList = myArrayList;
}
// getting the ArrayList value
public ArrayList getArrayList()
{
return myArrayList;
}
第二种方法:
在ArrayList文件中,(假设类名是类A.java)
private static ArrayList myArrayList = null;
...
// assign arraylist
public static ArrayList getArrayList()
{
return myArrayList;
}
在调用活动/类中,您可以使用以下代码进行调用,
private ArrayList newArrayList = null;
newArrayList = A.getArrayList();
我是java新手,我不知道如何从另一个类访问变量 我正在尝试编写一个代码来发送带有未存储在本地的附件的邮件。我想访问SendMail类中ExcelFile类中编写的变量 如何在另一个类中访问excelFileAsByte并发送邮件而不将其存储在本地。我可以使用addBodyPart和ByteArrayResource将文件添加为附件吗。
问题内容: 您好我是Java的初学者,这是我的问题:我有带有以下变量的第一堂课: 我也有这堂课: 我的问题是:我想将number1和number2变量存储到ArrayList中,然后从类test中访问此ArrayList。我怎样才能做到这一点? 问题答案: 和测试类:
问题内容: 我试图尽可能简化我的困境。我有三节课: Α: Beta: 主要: 我希望我不要过分简化。我的问题是如何从Alpha中的方法访问cBeta.DoSomethingBeta()? 问题答案: 你需要以某种方式为Alpha类提供对cBeta的引用。有三种方法可以做到这一点。 1)在构造函数中为Alphas提供Beta。在Alpha课堂上写道: 并从main()调用cAlpha = new A
我是一名Java程序员初学者。我试图在类交通中访问类车中的两个列表,这样我就可以执行while循环,循环直到主类中的列表为空 这就是我现在掌握的代码,我试着从普通车上扩展流量,但没有成功,我被卡住了。我该怎么解决这个问题?
null null
类:DbUserController.cs txtUrl=性能页。fxml TextField c.txtUrl。setText(“测试”); 我指的代码不起作用。 它不会将“TEST TEST”写入TextBox。