カスタム リスト アクティビティを作成しています。ListActivity を拡張したクラスと、そのリスト アクティビティ用の ArrayAdapter を持つクラスの 2 つのクラスがあります。このリストビューには、テキストビューとテーブル レイアウトが含まれています。
問題は、getView をたとえば 2 回呼び出していることです。自動的に 3 回呼び出されます。lsitview をスクロールすると、行が自動的に追加されます。
なぜこれが起こっているのか、これを克服するために何をすべきかを教えてください。
カスタム ビューを生成するための xml
displayweek.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/tvTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
<HorizontalScrollView android:id="@+id/horizontalScrollView1" android:layout_width="match_parent" android:layout_height="wrap_content">
<TableLayout android:layout_width="wrap_content" android:id="@+id/tableLayout1" android:layout_height="wrap_content">
</TableLayout>
</HorizontalScrollView>
</LinearLayout>
getview を呼び出す
if (weekAdapter == null) {
weekAdapter = new weekAdapter(this, 0);
}
lvSchedule.setAdapter(weekAdapter);
weekAdapter.add("true"+","+"10:10Am"+","+"Monday"+","+"Tuesday"+","+"Wednesday"+","+"Thusday"+","+"Friday"
+","+"Saturday"+","+"Sunday");
weekAdapter.add("true"+","+"10:10Am"+","+" "+","+" "+","+" "+","+"Sumit"+","+" "+","+" "+","+"Humam");
weekAdapter クラス
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class weekAdapter extends ArrayAdapter<String>{
Context context;
public weekAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
this.context=context;
}
public weekAdapter(Context context, int textViewResourceId, String[] objects) {
super(context,textViewResourceId, objects);
this.context=context;
}
@SuppressLint("NewApi")
@Override
public View getView(int position,View convertView,ViewGroup parent)
{
if(convertView==null)
{
convertView=LayoutInflater.from(getContext()).inflate(R.layout.displayweek,null);
}
TableLayout table=(TableLayout)convertView.findViewById(R.id.tableLayout1);
TextView tvTime=(TextView)convertView.findViewById(R.id.tvTime);
String str=getItem(position);
String []schedule=str.split(",");
Log.d("schedule length",""+schedule.length);
if(schedule[0].trim().equals("true"))
tvTime.setText(""+schedule[1]);
else
tvTime.setText("");
TableRow tr = new TableRow(context);
tr.setId(1);
tr.setTag("");
tr.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
TextView tvMon = new TextView(context);
tvMon.setId(1);
tvMon.setText(""+schedule[2]);
tvMon.setPadding(2, 0, 5, 0);
tvMon.setTextColor(Color.BLACK);
tvMon.setHeight(50);
tvMon.setGravity(Gravity.RIGHT);
tr.addView(tvMon);
TextView tvTue = new TextView(context);
tvTue.setId(1);
tvTue.setText(""+schedule[3]);
tvTue.setPadding(2, 0, 5, 0);
tvTue.setTextColor(Color.BLACK);
tvTue.setHeight(50);
tvTue.setGravity(Gravity.RIGHT);
tr.addView(tvTue);
TextView tvWed = new TextView(context);
tvWed.setId(1);
tvWed.setText(""+schedule[4]);
tvWed.setPadding(2, 0, 5, 0);
tvWed.setTextColor(Color.BLACK);
tvWed.setHeight(50);
tvWed.setGravity(Gravity.RIGHT);
tr.addView(tvWed);
TextView tvThus = new TextView(context);
tvThus.setId(1);
tvThus.setText(""+schedule[5]);
tvThus.setPadding(2, 0, 5, 0);
tvThus.setTextColor(Color.BLACK);
tvThus.setHeight(50);
tvThus.setGravity(Gravity.RIGHT);
tr.addView(tvThus);
TextView tvFri = new TextView(context);
tvFri.setId(1);
tvFri.setText(""+schedule[6]);
tvFri.setPadding(2, 0, 5, 0);
tvFri.setTextColor(Color.BLACK);
tvFri.setHeight(50);
tvFri.setGravity(Gravity.RIGHT);
tr.addView(tvFri);
TextView tvSat = new TextView(context);
tvSat.setId(1);
tvSat.setText(""+schedule[7]);
tvSat.setPadding(2, 0, 5, 0);
tvSat.setTextColor(Color.BLACK);
tvSat.setHeight(50);
tvSat.setGravity(Gravity.RIGHT);
tr.addView(tvSat);
TextView tvSun = new TextView(context);
tvSun.setId(1);
tvSun.setText(""+schedule[8]);
tvSun.setPadding(2, 0, 5, 0);
tvSun.setTextColor(Color.BLACK);
tvSun.setHeight(50);
tvSun.setGravity(Gravity.RIGHT);
tr.addView(tvSun);
table.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
return convertView;
}
}