ListAdapter中的.getPosition

时间:2015-10-01 14:52:08

标签: android arraylist

我只是在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 ++导致它是最终的,当我声明它不是最终它不能从内部类中访问...

如何让变量在循环外工作?

感谢您的帮助。

1 个答案:

答案 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的值开始,但你的代码看起来不像......

希望这有帮助