如何从多个数组加载数据到列表视图?
问题描述:
这里是我的列表视图结构:如何从多个数组加载数据到列表视图?
________________________
Job No :
Address :
________________________
Job No :
Address :
________________________
Job No :
Address :
________________________
所有的工作没有的都存储在一个阵列和地址存储在另一个数组。 如何将这些数组加载到我的列表视图中。谁能帮我。请
答
创建自定义适配器..
的伪代码看起来像下面..
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]);
}
}
答
我建议阵列首先合并到含有保持完整信息的一个行对象一个阵列你的列表视图。或者,如果信息来自数据库,则可以使用CursorAdapter。
然后创建一个ViewBinder
并将其连接到您的适配器(setViewBinder()
)。哪一个取决于你的适配器。有例如一个SimpleCursorAdapater.ViewBinder
或一个SimpleAdapter.ViewBinder
等等。在ViewBinder
的setViewValue()方法中,您填充列表视图中行的字段。在你的例子中,有两个字段,一个用于工作号和一个用于地址。为此,您需要为包含这些字段的列表项目创建自定义布局。布局通常在适配器的构造函数中设置。
更多有关ViewBinder
是在Android开发者文档可用。
答
您的列表视图创建一个适配器,就像沙地建议,然后调用适配器在您的活动。这是我的一个适配器的例子:
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);
我也将采取斯特凡的意见,并结合成一个阵列。对我来说“术语”是一个数组列表,每个术语都有一个全名,两个缩写,一个定义和一个公式。祝你好运!
你使用什么适配器? – candyleung 2012-04-23 09:57:37
请显示您的适配器 – candyleung 2012-04-23 09:59:08