私はAndroidがまったく初めてです。
この質問は基本的なものかもしれません。
しかし、私はこれで4日間苦労しています。私を助けてください。
ブログからいくつかのカテゴリのコンテンツを提供するための水平リストビューを作成しています。
(Pulse ニュース アプリと同様のインターフェース)
水平リストビューのオープンソースを入手し、それを修正しています。
このコードはCustomArrayAdapter.java
.
しかし、私が書こうとするとsuper()
; コンストラクター内では、次のようなエラーが発生します。
The constructor ArrayAdapter<ArrayList<HashMap<String, String>>>(Context, int, ArrayList<HashMap<String, String>>) is undefined
そして日食は次のように提案します:
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;
}
}