4

内部に相対レイアウトとリストビューを含むドロワー レイアウトを作成しています (1 つはメイン コンテンツ用、もう 1 つはナビゲーション用)。

リストビューの場合、カスタムアダプターを作成し、imageview と textview を持つ list_item xml ファイルを使用して各行を作成します。

アプリは実行されますが、ドロワーを開くと、リストビューなしで背景のみが表示されます。ArrayAdapter (デフォルト) で試してみると、リストビューが表示されます。

何かアドバイス?

私のカスタムアダプター

public class CustomAdapter extends ArrayAdapter<Categories>{

Context context;
int layoutResourceId;
Categories[] data = null;

public CustomAdapter(Context context, int layoutResourceId, Categories[] categs) {
    super(context, layoutResourceId);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    data = categs;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    PHolder holder = null;

    if(row == null)
    {
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new PHolder();
        holder.imgIcon = (ImageView)row.findViewById(R.id.categimage);
        holder.txtTitle = (TextView)row.findViewById(R.id.categtext);

        row.setTag(holder);
    }
    else
    {
        holder = (PHolder)row.getTag();
    }

    Categories categ = data[position];
    holder.txtTitle.setText(categ.title);
    holder.imgIcon.setImageResource(categ.icon);

    return row;
}

static class PHolder
{
    ImageView imgIcon;
    TextView txtTitle;
}

}

そして私の主な活動では

mDrawerList = (ListView) findViewById(R.id.categlist);

    Categories data[] = new Categories[]
    {
        new Categories(R.drawable.restaurant, R.string.food),
        new Categories(R.drawable.bar_coktail, R.string.bar),
        new Categories(R.drawable.mall, R.string.shop),
        new Categories(R.drawable.agritourism, R.string.out),
        new Categories(R.drawable.dance_class, R.string.art),
        new Categories(R.drawable.officebuilding, R.string.other),
        new Categories(R.drawable.university, R.string.education),
        new Categories(R.drawable.townhouse, R.string.house),
        new Categories(R.drawable.junction, R.string.transport)
    };
    CustomAdapter ca = new CustomAdapter(this, R.layout.list_item, data);

    View header = (View)getLayoutInflater().inflate(R.layout.list_header, null);
    mDrawerList.addHeaderView(header);

    mDrawerList.setAdapter(ca);
4

1 に答える 1

1

次のいずれかを使用します。

super(context, layoutResourceId, categs);

getCount()コンストラクターで、またはメソッドをオーバーライドします。

@Override
public int getCount() {
   return data.length;
} 
于 2013-07-26T09:18:36.737 に答える