簡體   English   中英

導航抽屜無法識別自定義適配器布局

[英]Navigation Drawer does not recognize custom adapter layout

有人可以指出此代碼段是什么問題

Custom adapter

public class NavigationAdapter extends ArrayAdapter<NavItem> {
private Context context;
private NavItem[] values;

public NavigationAdapter(Context context, int layoutResourceId,NavItem[] values) {
    super(context, layoutResourceId);
    this.context = context;
    this.values = values;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final Holder holder;
    LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View convertView1 = convertView;
    if (convertView1 == null) {
        holder = new Holder();
        convertView1 = vi.inflate(R.layout.item_row, parent,false);
        holder.imageView = (ImageView) convertView1.findViewById(R.id.rowIcon);
        holder.textView = (TextView) convertView1.findViewById(R.id.rowText);
        convertView1.setTag(holder);
    } else {
        holder = (Holder) convertView1.getTag();
    }
    NavItem item = values[position];

    holder.imageView.setImageResource(item.icon);
    holder.textView.setText(item.name);

    return convertView1;
}

private class Holder {
    public TextView textView;
    public ImageView imageView;
}
}

custom listview layout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:padding ="10dp">

<ImageView
    android:id="@+id/rowIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/ic_action_settings"
    android:paddingRight="10dp"/>

<TextView
    android:id="@+id/rowText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_toRightOf="@+id/rowIcon"
    android:paddingRight="10dp"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"/>

Main activity

NavItem settings = new NavItem();
settings.icon = R.drawable.ic_action_settings;
settings.name = "Settings";

NavItem send = new NavItem(R.drawable.ic_action_settings,"Sent");

NavItem[] values = new NavItem[]{
                settings,send
};

NavigationAdapter adapter = new NavigationAdapter(this, R.layout.item_row, values);
mDrawerListView.setAdapter(adapter);

當我打開抽屜時,它只會顯示一個空白頁。 如果我將適配器更改為字符串的ArrayAdapter並膨脹內置布局,則它可以工作,但是我想在文本旁邊添加圖像。

我的經歷也遇到過類似的問題。

我通過更改解決了這個問題:

public class NavigationAdapter extends ArrayAdapter<NavItem> {

}

至 :

public class NavigationAdapter extends BaseAdapter<NavItem> {

}

我從適用於我的情況的BaseAdapter類擴展了自定義適配器。 如果您也可以嘗試此操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM