サンディが提案したように、リストビュー用のアダプターを作成し、アクティビティでアダプターを呼び出します。私のアダプターの例を次に示します。
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 つの略語、定義、および式があります。幸運を!