Androidカスタムアダプタ
3701 ワード
ListViewでGridView...の中でよくアダプターAdapterを使いますが、anroidが提供するAdapterはいくつかのフレームワークにすぎません.もし私たちが需要があれば、やはり自分で必要に応じてAdapterのandroidをカスタマイズして提供する3種類のAdapterは主にArrayAdapter、SimpleAdapter、SimpleCursorAdapterがあります.SimpleAdapterは、カスタムサブViewレイアウトで、画像(ローカル画像のみ、ネットワークで画像をロードする場合は、私の前のBlogを参照してください)を持つことができます.SimpleCursorAdapterは主にデータベースに使用され、前の2つのデータソースは一般的にString[]またはListです.次のデータソースは一般的にデータベースクエリーで得られたCursorですが、私たちがカスタマイズしたものが一番多いのはSimpleAdapterから継承されているのか、具体的な使い方は前のBlogに続いています.ダウンロードの進捗バーを表示するサブViewをリストViewに表示したいのですが、SimpleAdapterは一般的な画像を表示することができます.しかし、進捗バーを表示することはできません(表示するだけでなく、リアルタイムで更新する必要があります)ので、SimpleAdapterを継承します.具体的に複写する方法は4つあります.public int getCount()public Object getItem(int position)public long getItemId(int position)public View getView(int position,View convertView,View Group parent)さらに重要なのは、その構築方法MyAdapter(Context context,List>list)です.パラメータは固定されていません.使用するデータに基づいて自分で定義することができ、第1のパラメータは表示するコンテキスト環境であり、第2のパラメータは各エントリの情報を記録するためのものである.第1の方法は主にListViewに表示するサブViewの数、すなわちダウンロードタスク数を返し、構築方法のリストのエントリを返すだけでよい.第2の方法はサブViewを返すことである.すなわち、ListViewのサブエントリです.もちろん、必要な情報をカスタマイズして返すこともできます.3番目のメソッドは、ListViewの位置に基づいてidを返すことです.最も重要な最も理解しにくいのは4番目のメソッドです.4番目のメソッドは、主にこのエントリの情報全体を返すことです.これは個別のレイアウトファイルです.もちろんandroid構造に基づいてもViewクラスの継承クラスであり、ここでもう一つの知識点はLayoutInflaterクラスであり、そのinflate()メソッドはレイアウトファイルに基づいてそのView戻り値を得ることができる.最も重要なアイデアは、これらのエントリからそのサブView(ListViewには多くのエントリがあり、各エントリには多くのコンポーネントがあり、ここではListViewの複数のダウンロードタスクが異なるエントリであり、各ダウンロードタスクの名前、進捗状況はそのサブViewのコンポーネントである)を取得し、サブコンポーネントを取得した後、構造方法においてList>listパラメータが伝達する値に応じて、対応する値を付与したり、リソースを設定したりすることができます.具体的なコードは以下の通りです.
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter
{
private Context context;
private LayoutInflater layoutInflater;
private List