0

問題は次のとおりです。arraylist には 49 個のアイテムがあり、アダプターはエラー通知なしでアイテム 3 で停止しています。アプリはクラッシュせず、テキストビューも表示されません。アダプターは次のとおりです。

public class ExhibitorObjectAdapter extends ArrayAdapter<ExhibitorObject> {

public ArrayList<ExhibitorObject> exhibitors;
public Activity act;
public TextView tvExhibitorName;
public ImageView ivExhibitorLogo;

public ExhibitorObjectAdapter(Activity a, int layoutResourceId, ArrayList<ExhibitorObject> ex) {
    super(a, layoutResourceId,ex);
    this.exhibitors = ex;
    this.act = a;

}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return exhibitors.size();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
        LayoutInflater inflater = (LayoutInflater) act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(R.layout.single_exhibitor, null);        
    }

    ExhibitorObject ex = exhibitors.get(position);

    if (ex != null) {

         //System.out.println(ex.companyName);
        tvExhibitorName = (TextView) v.findViewById(R.id.textViewListExhibitorName);

        tvExhibitorName.setText( ex.companyName );

    }

    return v;
}

}

編集:リストビューを含むxmlは次のとおりです:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >


<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="18sp" 
    android:background="#134882"
    android:paddingBottom="15sp"
    android:paddingTop="5sp" 
    android:paddingLeft="5sp" 
    android:textColor="#FFFFFF" 
    android:text="Exhibitors" />


<ListView android:id="@+id/listViewExhibitors"
          android:layout_height="match_parent"
          android:layout_width="match_parent"/>


</LinearLayout>

これとまったく同じアダプターが他にもいくつかありますが、それらは問題なく動作します。私はこれで丸一日を無駄にしました(おそらくばかげた問題です)、助けていただければ幸いです。ありがとう。

4

1 に答える 1

0

アダプタのスコープに tvExhibitorName を保存するのはよくありません。getView() 内でローカルにしないと、あらゆる種類のリークにさらされます。それがあなたの問題の原因かもしれません。

また、親の下で新しいビューを膨らませないのは非常に奇妙です。inflate(layout, parent , false) を使用すると役立つ場合があります。

于 2013-05-17T16:50:45.297 に答える