0

これが私のリストビュー構造です:

________________________

Job No : 
Address : 

________________________

Job No : 
Address : 

________________________

Job No : 
Address : 

________________________

すべてのジョブ番号は 1 つの配列に保存され、アドレスは別の配列に保存されます。これらの配列をリストビューにロードするにはどうすればよいですか。誰でも私を助けることができますか?お願いします

4

3 に答える 3

3

カスタム アダプタを作成します。

擬似コードは以下のようになります..

Class Adpter extends BasAdapter{
String[] one;
String[] two;
public Adpter(String[] one, String[] two){
this.one = one;
this.two= two;
}

public getView(convertView){

text1.setText(one[position]);
text12.setText(two[position]);

}

}
于 2012-04-23T10:05:19.600 に答える
0

サンディが提案したように、リストビュー用のアダプターを作成し、アクティビティでアダプターを呼び出します。私のアダプターの例を次に示します。

public class DictionaryListAdapter extends BaseAdapter {

private static ArrayList<Term> termsList;

private LayoutInflater mInflater;

public DictionaryListAdapter (Context ctx, ArrayList<Term> results){
    termsList = results;
    mInflater = LayoutInflater.from(ctx);
}

public int getCount() {
    // TODO Auto-generated method stub
    return termsList.size();
}

public Object getItem(int position) {
    // TODO Auto-generated method stub
    return termsList.get(position);
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    ViewHolder holder;
    if (convertView == null){
        convertView = mInflater.inflate(R.layout.dictionarylistinflater, null);
        holder = new ViewHolder();
        holder.tvTerm = (TextView) convertView.findViewById(R.id.tvTerm);
        holder.tvAbbr = (TextView) convertView.findViewById(R.id.tvAbbreviation);

        convertView.setTag(holder);
    }
    else{
        holder = (ViewHolder) convertView.getTag();
    }

    holder.tvTerm.setText(termsList.get(position).getWord());
    holder.tvAbbr.setText(termsList.get(position).getAbbr1() + "   " +termsList.get(position).getAbbr2());

    return convertView;
}

static class ViewHolder{
    TextView tvTerm;
    TextView tvAbbr;
}

}

そして、これが私がアクティビティでそれをどのように呼んだかです:

//set the listview
    final ListView lvTerms = getListView();
    lvTerms.setAdapter(new DictionaryListAdapter(this, terms));
    lvTerms.setTextFilterEnabled(true);

また、Stefan のアドバイスを受けて、それを 1 つの配列に結合します。私にとっての「terms」は用語の配列リストであり、各用語には完全な名前、2 つの略語、定義、および式があります。幸運を!

于 2012-04-23T10:33:39.650 に答える
0

最初に、リスト ビューの 1 行の完全な情報を保持するオブジェクトを含む 1 つの配列に配列をマージすることをお勧めします。または、情報がデータベースから取得される場合は、CursorAdapter を使用できます。

次に、 を作成ViewBinderしてアダプタに接続します ( setViewBinder())。どちらがアダプタに依存します。たとえば aSimpleCursorAdapater.ViewBinderや aなどがありSimpleAdapter.ViewBinderます。のViewBindersetViewValue() メソッドで、リスト ビューの行のフィールドに入力します。あなたの例では、ジョブ番号用と住所用の 2 つのフィールドがあります。これを機能させるには、これらのフィールドを含むリスト アイテムのカスタム レイアウトを作成する必要があります。レイアウトは通常、アダプターのコンストラクターで設定されます。

詳細についてViewBinderは、Android 開発者向けドキュメントをご覧ください。

于 2012-04-23T10:10:28.770 に答える