나는 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"),
}
을 그리고 난 내 자신의 RankingAdapter으로 ranking_data
를 참조;
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);
}
이 아마도 때문에 ranking_data
세트 내 초기화 그것을 null
에, 나에게 RankingAdapter adapter = new RankingAdapter(this, R.layout.listview_item_row, ranking_data);
에 내 전화에 NullPointerException
을 제공하지만, 어떻게 그것을 달리 초기화해야합니까?
편집
내 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' 배열의 크기를 먼저 정의하십시오 –
@ ρяσѕρєяK 배열 대신 ArrayList를 사용하여 순위를 어떻게 선언합니까? 배열 및 물건에 관해서는 총 n00b되는 것에 대해 유감스럽게 생각합니다. 'RankingAdapter'가 선언 된 방법에 대한 내 편집을보십시오. 내 RankingAdapter는 ArrayAdapter을 확장합니다. –
kaderud
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