2013-07-21 78 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

相关问题