tableViewにJSON結果を表示する際に問題があり、フェッチされたデータを挿入する前にテーブル行をクリアする代わりに、古いデータからの新しいデータを連結するだけで、理由がわかりません。これが私のコードです:
まず、選択した都市と日付に基づいてすべての情報を取得するJSONパーサーがあり、その部分を表示する必要はないと思いますが、データをリスト配列に追加してから、この部分を実行します。
public void showinfo(){
// Get the TableLayout
TableLayout tl = (TableLayout) findViewById(R.id.maintable);
tl.removeAllViews();
Log.v(KahelTag, "eventsCleared");
// Go through each item in the array
for (int current = 0; current < infoID.size(); current++)
{
TableRow tr = new TableRow(this);
tr.setId(100+current);
tr.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
//CREATE TEXT VIEW FOR INFO1
final TextView info1 = new TextView(this);
clubName.setId(200+current);
clubName.setText(info1.get(current));
clubName.setTextColor(Color.WHITE);
clubName.setTextSize(12);
clubName.setTypeface(null, Typeface.BOLD);
clubName.setTag(infoID.get(current));
clubName.setGravity(Gravity.CENTER_VERTICAL);
clubName.setLayoutParams(new LayoutParams(
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 65, getResources().getDisplayMetrics()),
LayoutParams.WRAP_CONTENT));
tr.addView(info1);
//CREATE TEXT VIEW FOR info2
TextView info2 = new TextView(this);
eventName.setId(current);
eventName.setText(info2.get(current));
eventName.setGravity(Gravity.CENTER_VERTICAL);
eventName.setTextSize(12);
eventName.setTextColor(Color.WHITE);
eventName.setLayoutParams(new LayoutParams(
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 120, getResources().getDisplayMetrics()),
LayoutParams.WRAP_CONTENT));
tr.addView(info2);
//CREATE TEXT VIEW FOR INFO3
TextView info3 = new TextView(this);
eventDate.setId(current);
eventDate.setText(info3.get(current));
eventDate.setGravity(Gravity.CENTER_VERTICAL);
eventDate.setTextSize(12);
eventDate.setTextColor(Color.WHITE);
eventDate.setLayoutParams(new LayoutParams(
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics()),
LayoutParams.WRAP_CONTENT));
tr.addView(info3);
// Add the TableRow to the TableLayout
tl.addView(tr, new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
}
}
ここで、showinfo()を使用してコンテンツビューを設定した後、その情報を表示します。そして今、スピナー部分について。JSONコードを再度呼び出してパラメーターを変更し、テーブルに情報を再度表示します。しかし、上で述べたように、データを連結するだけなので、思ったようには機能しません。ちなみに、JSONテキストに渡されるパラメーターは2つあります。スピナーのコードは次のとおりです。
Spinner spinParam1 = (Spinner) findViewById(R.id.spinner1);
Spinner spinParam2 = (Spinner) findViewById(R.id.spinner2);
spinParam1.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
Object specify_param1 = parentView.getItemAtPosition(position);
if(specify_param1.toString() != "All"){
getEvents(specify_param1.toString(),null);
showinfo();
Log.v(KahelTag, "showinfo");
}
else
{
getEvents(null,null);
showinfo();
Log.v(KahelTag, "elseshowinfo");
}
}
public void onNothingSelected(AdapterView<?> parentView) {
getEvents(null,null);
showinfo();
Log.v(KahelTag, "nothingshowinfo");
}
});
spinParam2.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
Object specify_param2 = parentView.getItemAtPosition(position);
if(specify_param2.toString() != "Any"){
getEvents(specify_param2.toString(),null);
showinfo();
Log.v(KahelTag, "showinfo");
}
else
{
getEvents(null,null);
showinfo();
Log.v(KahelTag, "elseshowinfo");
}
}
public void onNothingSelected(AdapterView<?> parentView) {
getEvents(null,null);
showinfo();
Log.v(KahelTag, "nothingshowinfo");
}
});
これを希望どおりに機能させるために必要な修正はありますか?ありがとう!