我只是在Android上学习了几个星期,所以也许我的问题很愚蠢,但我的代码遇到了两个问题....
//[improt etc.]
ArrayList<HashMap<String, String>> arrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {...
arrayList = new ArrayList<HashMap<String, String>>();
//[...]
try {
jsonObject = new JSONObject(uebergabe);
jsonArray = jsonObject.getJSONArray("Fux");
int i;
for (i=0; i < jsonArray.length(); i++)
{
HashMap<String, String> Hashmap = new HashMap<String, String>();
JSONObject jO = jsonArray.getJSONObject(i);
String headline = jO.optString("headline");
Hashmap.put("headline", headline);
String content = jO.optString("content");
Hashmap.put("content", content);
arrayList.add(Hashmap);
}
list = (ListView) findViewById(R.id.list_fuxenfibel);
ListAdapterFibel adapterFibel = new ListAdapterFibel(this, R.layout.layout_fibel, arrayList);
list.setAdapter(adapterFibel);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
{
Intent intent = new Intent(Fuxenfibel.this, Fuxenfibel_Inhalt.class);
intent.putExtra("content",arrayList.getPosition(i).get("content"));
startActivity(intent);
}
});
} catch (JSONException e) {
//[...]
我无法使用
intent.putExtra("content", arrayList.getPosition(i).get("content"));
获取位置,导致“无法解决方法”错误,因为它不是PublicMethod
的{{1}},而是ArrayList
的方法。
是否有ArrayAdapter
的类似方法,或其他方法来解决这个问题而不重新考虑整个代码?
我的第二个问题是同一代码行中的变量i,它抛出“无法解析符号'i'错误。有些人如何在for循环之外声明我修复此错误吗?
当我喜欢这个时
ArrayList
for循环不能做i ++导致它是最终的,当我声明它不是最终它不能从内部类中访问...
如何让变量在循环外工作?
感谢您的帮助。
答案 0 :(得分:0)
要获取ArrayList的位置,您应该使用get()方法。
对于&#39; i&#39; var就像它在AdapterView.OnItemClickListener()内部类中所使用的那样你应该在你指向时声明它是最终的,为了克服在for循环中使用它的问题,你应该声明它最终获取值然后使用另一个var来循环。 / p>
所以它应该是
final int i;
for (int a=i;a<jasonArray.lenght;a++)
{
}
如果你需要从i的值开始,但你的代码看起来不像......
希望这有帮助