我正在阅读HTML页面,并从包含two colums
的表中获取值。这些值我需要插入到ListView
。如何从ArrayAdapter填充ListView
我很难理解Arrays
和ArrayAdapter
的概念,所以我试着通过阅读各种代码示例来阐述一些内容。我的代码工作完美时,我静态填充我的ArrayAdapter(在Java代码中),但我需要使用循环(或东西?)填充数组的内容与我从HTML页面中获得的内容(所有这些代码正常工作并就位)。
这是我使用的是什么:
Ranking.java
public class Ranking {
public String month;
public String rank;
public Ranking() {
super();
}
public Ranking(String month, String rank) {
super();
this.month = month;
this.rank = rank;
}
}
此代码:
Ranking ranking_data[] = new Ranking[] {
new Ranking("January 2013", "67"),
new Ranking("February 2013", "45"),
}
然后,我引用ranking_data
用我自己的RankingAdapter;
RankingAdapter adapter = new RankingAdapter(this, R.layout.listview_item_row, ranking_data);
所以我的问题是;
如何动态填充ranking_data?
例如,此不是似乎工作以填充循环;
Ranking ranking_data[] = null;
String mVal1, mVal2;
while (myIterator1.hasNext() && myIterator2.hasNext()) {
mVal1 = myIterator1.next().text();
mVal2 = myIterator2.next().text();
new Ranking(mVal1, mVal2);
}
这使我对我的呼吁RankingAdapter adapter = new RankingAdapter(this, R.layout.listview_item_row, ranking_data);
一个NullPointerException
,也许是因为我的ranking_data
套初始化它null
,但我应该怎么否则初始化呢?
编辑
我RankingAdapter
声明如下:
public class RankingAdapter extends ArrayAdapter<Ranking>
是否有帮助?
编辑2
添加的代码为RankingAdapter.java
public class RankingAdapter extends ArrayAdapter<Ranking> {
Context context;
int layoutResourceId;
Ranking data[] = null;
public RankingAdapter(Context context, int layoutResourceId, Ranking[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
RankingHolder holder = null;
if(row == null) {
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new RankingHolder();
holder.txtMonth = (TextView)row.findViewById(R.id.item_month);
holder.txtRank = (TextView)row.findViewById(R.id.item_rank);
row.setTag(holder);
} else {
holder = (RankingHolder)row.getTag();
}
Ranking ranking = data[position];
holder.txtMonth.setText(ranking.month);
holder.txtRank.setText(ranking.rank);
return row;
}
static class RankingHolder {
TextView txtMonth;
TextView txtRank;
}
}
使用'型的ArrayList',如果你不知道你有多少个项目上榜,而不是阵列将在'ListView'中显示。如果你知道数量的项目,那么首先在添加项目之前定义'ranking_data'数组的大小 – 2013-03-15 17:57:38
@ρяσѕρєяK我如何用'ArrayList'而不是Array来声明排名?抱歉,当涉及到阵列和东西时总共有n00b。查看我的Edit,了解我的'RankingAdapter'是如何声明的。 My RankingAdapter扩展了ArrayAdapter。 –
kaderud
2013-03-15 18:12:15
http://stackoverflow.com/questions/15109406/how-to-set-json-parsed-data-in-a-listview-and-then-adding-search-functionality-i/15109592#15109592。检查答案。而不是NewData有Ranking类。相应地修改代码。 – Raghunandan 2013-03-15 18:24:01