2014-03-31 66 views
0

我希望你能幫助我與這個新手q :) 我正在使用Android Studio。 我想在setOnItemClickListener中使用ArrayAdapter,但出現錯誤,我不知道我在這裏做錯了什麼。請幫我:)setOnItemClickListener中的Android ArrayAdapter

這個「listAdapter = new ArrayAdapter(this,R.layout.simplerow,arrayView);」給出了這樣的錯誤:

無法解析構造 'ArrayAdapter(android.widget.AdapterView.OnItemClickListener,INT,java.util.ArrayList中的)'

----- mycode的------

mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> arg0, View v, int position, 
          long arg3) 
    { 
     String name = arg0.getItemAtPosition(position).toString(); 
     //Log.d("name", "name: "+name); 
     int j = 0; 
     while (j < livsmedelsNameValues.size()) { 
      if (livsmedelsNameValues.get(j).toString().equalsIgnoreCase("Foodlist: "+name)) { 
       for (int i = 0; i < 62; i++) { 
        test[0] = livsmedelsNameValues.get(i+j); 
        //Log.d("test", "test: " + test[0]); 
        arrayView.add(test[0].toString()); 
       } 
      } 
      j++; 
     } 
     listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, arrayView); 


     mainListView.setAdapter(listAdapter); 
    } 

}); 
+0

請張貼錯誤日誌... – EdmDroid

+0

arrayView應該是陣列字符串。檢查你傳遞的正確字符串數組 – Libin

+0

final ArrayList arrayView = new ArrayList (); 這就是它的樣子....無論如何,其中一個答案我得到的代碼錯誤解決,但現在的問題是,listVIew沒有設置此信息從「陣列視圖」。 感謝您的回答:) – user2034859

回答

0

listAdapter = new ArrayAdapter(this, R.layout.simplerow,arrayView);

此處ArrayAdapter的第一個參數必須是上下文。所以 在你onclick監聽器「this」意味着OnItemClickListener而不是Context。如果Activity類中的代碼使用「this」。

現在使用getBaseContext()或getApplicationContext()或您activity.this或getActivity(),而不是 「本」,因此使用

listAdapter = new ArrayAdapter(getBaseContext(), 

R.layout.simplerow,arrayView);

listAdapter = new ArrayAdapter(getApplicationContext(),R.layout.simplerow, arrayView); 
+0

謝謝你沒有錯誤:) 任何想法爲什麼不用這個新的東西更新列表視圖? mainListView.setAdapter(listAdapter); 它可能是什麼,我已經使用這個列表視圖,並試圖輸入新的信息? – user2034859

1

你有

listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, arrayView); 

this是不是一個有效的上下文。如果在分段中使用ActivityName.thisgetActivity()