2013-07-21 254 views
0

我對Android完全陌生。構造函數ArrayAdapter <ArrayList <HashMap <String,String >>>(Context,int,ArrayList <HashMap <String,String >>)未定義

這個問題可能是一個基本的問題。

但我正在爲此掙扎四天。請幫幫我。

我正在做橫向列表視圖提供從博客幾個類別的內容。

(類似於接口脈衝新聞應用程式)

我水平的ListView開源,我修改它。

此代碼是CustomArrayAdapter.java

但是當我試圖寫super();在構造函數中,它使這樣的錯誤:

The constructor ArrayAdapter<ArrayList<HashMap<String, String>>>(Context, int, ArrayList<HashMap<String, String>>) is undefined 

和Eclipse建議是這樣的:

Remove argument to match 'ArrayAdapter<ArrayList<HashMap<String, String>>>(Context, int)' 

我不知道這個(上下文,INT)的說法是從哪裏來的。

請檢查什麼是錯在下面CustomArrayAdapter.java

package com.xxxx.xxxxxxxxx; 

import java.util.ArrayList; 
import java.util.HashMap; 

import android.content.Context; 
import android.graphics.Color; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

/** An array adapter that knows how to render views when given CustomData classes */ 
public class CustomArrayAdapter extends ArrayAdapter<ArrayList<HashMap<String, String>>> { 
    private Context context; 
    private ArrayList<HashMap<String, String>> data; 
    private int viewId; 

    private LayoutInflater mInflater; 

    public CustomArrayAdapter(Context c, int textViewResourceId, ArrayList<HashMap<String, String>> d) { 
     super(c, textViewResourceId, d); 

     this.context = c; 
     this.viewId = textViewResourceId; 
     this.data = d; 
    } 

    @Override 
    public int getCount() { 
     return data.size(); 
    } 

    /* 
    * We are overriding the getView method here - this is what defines how each 
    * list item will look. 
    */ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) {   
     // Assign the view we are converting to a local variable 
     View vi = convertView; 
     Holder holder;  

     if (convertView == null) { 

      // Inflate the view since it does not exist 
      if (vi == null) { 
       mInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       vi = mInflater.inflate(R.layout.custom_data_view, null); 
      } 

      /* 
      * Recall that the variable position is sent in as an argument to this method. 
      * The variable simply refers to the position of the current object in the list. (The ArrayAdapter 
      * iterates through the list we sent it) 
      * 
      * Therefore, i refers to the current Item object. 
      */ 

      // This is how you obtain a reference to the TextViews. 
      // These TextViews are created in the XML files we defined. 

      // Create and save off the holder in the tag so we get quick access to inner fields 
      // This must be done for performance reasons 

      holder = new Holder(); 
      holder.textView = (TextView) vi.findViewById(R.id.title_view); 
      holder.imageView = (ImageView) vi.findViewById(R.id.thumbnail_view); 

      vi.setTag(holder);         

     } else { 
      holder = (Holder) vi.getTag(); 
     } 

     // check to see if each individual textview is null. 
     // if not, assign some text! 
     // Populate the text 

     HashMap<String, String> currentData = new HashMap<String, String>(); 
     currentData = data.get(position); 

     if (currentData != null) { 
      holder.textView.setText(currentData.get(MainActivity.KEY_TITLE)); 
      holder.imageLoader = new ImageLoader(context.getApplicationContext());  
      holder.imageLoader.DisplayImage(currentData.get(MainActivity.KEY_THUMBNAIL), holder.imageView); 
     }  

     // Set the color 
     vi.setBackgroundColor(Color.DKGRAY); 
     return vi; 
    } 

    /** View holder for the views we need access to */ 
    private static class Holder { 
     public TextView textView; 
     public ImageView imageView; 
     public ImageLoader imageLoader; 
    } 
} 
+0

http://developer.android.com/reference/android/widget/ArrayAdapter.html。檢查arrayadapter的公共構造函數。你在哪裏調用你的自定義適配器? – Raghunandan

+0

@Raghunandan感謝您的評論。其實我已經檢查過那個頁面,但是當時我找不到什麼錯誤。幸運的是,問題解決了。 – sodacan

回答

3

它應該是:

public class CustomArrayAdapter extends ArrayAdapter<HashMap<String, String>> 
+1

非常感謝。你救了我:)我按照你的指導修改了代碼,現在它工作正常。謝謝! – sodacan

0

編譯器告訴你改變這種

super(c, textViewResourceId, d); 

super(c, textViewResourceId); 
+1

感謝您的回答。是的,我嘗試了它。但是調用_super(c,textViewResourceId); _沒有參數d產生了另一個問題 - 它使listview的項目數爲零。所以我不得不在這種情況下與IndexOutOfBoundsException對抗。 – sodacan

相關問題