2015-10-01 9 views
-5

Я просто lerning Android в течение нескольких недель 2, так что, может быть, мой вопрос глупый, но у меня две проблемы с моим кодом .....getPosition в ListAdapter

//[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 из ArrayList, это метод ArrayAdapter.

Есть ли аналогичный метод ArrayList или другой способ исправить это без переосмысления всего кода?

Моя вторая проблема является переменной я в том же codeline, он бросает «Не удается разрешить символ„я“ошибка. Будет ли какой-нибудь, как объявить I вне исправления для цикла эту ошибку?

Когда я так

//[...] 
final int i; 
for (i=0;i<jasonArray.lenght;i++) 
//[...] 
intent.putExtra("content",arrayList./*MISSING METHOD not.getPosition*/.get("content")); 
//[...] 

для-цикла не может сделать я ++ вызвать это окончательное, когда я объявляю это не окончательная она не может быть доступ из внутреннего класса ...

Как получить переменную, работающих за пределами петля?

Спасибо, что помогли мне.

+0

использованию ' ((HashMap ) parent.getItemAtPosition (position)). Get ("content") ' – Blackbelt

ответ

0

Чтобы получить позицию ArrayList, вы должны использовать метод get().

И для «i» var, используемого для внутреннего класса AdapterView.OnItemClickListener(), вы должны объявить его окончательным, как вы указали, чтобы преодолеть проблему использования его в цикле for, вы должны объявить его окончательным, чтобы получить затем используйте другой var для цикла.

Так оно и должно быть

final int i; 
for (int a=i;a<jasonArray.lenght;a++) 
{ 
} 

что в случае, если вам нужно, чтобы начать на значении I, но ваш код не смотрит, как ...

Надеется, что это помогает

Смежные вопросы