我是Android新手。
这个问题可能是一个基本问题。
但是我这四天都在苦苦挣扎。请帮我。
我正在制作横向列表视图,用于提供博客中几个类别的内容。
(与Pulse新闻应用程序类似的界面)
我得到了水平列表视图的开源,我正在修改它。
此代码为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)'
我不知道这个(Context,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 :(得分:3)
应该是:
public class CustomArrayAdapter extends ArrayAdapter<HashMap<String, String>>
答案 1 :(得分:0)
编译器告诉你改变这个
super(c, textViewResourceId, d);
到
super(c, textViewResourceId);