我对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;
}
}
http://developer.android.com/reference/android/widget/ArrayAdapter.html。检查arrayadapter的公共构造函数。你在哪里调用你的自定义适配器? – Raghunandan
@Raghunandan感谢您的评论。其实我已经检查过那个页面,但是当时我找不到什么错误。幸运的是,问题解决了。 – sodacan