我正在閱讀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