ArrayAdapter getView方法只触发第一个元素

时间:2014-09-10 14:46:14

标签: android android-fragments android-arrayadapter android-listfragment

我尝试使用ListFragment创建list.I为listfragment创建了自定义数组适配器。当我启动我的项目时,我只能看到我的活动中的第一项。但是我注意到当我拖放第一项时,我可以在一行上看到第二项。您可以在下面看到我的片段布局和列表项布局。我还附加了我的自定义适配器类。提前谢谢。

片段布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="horizontal" >

<fragment
    android:id="@+id/menuFragment"
    android:name="com.example.fragment.MenuListFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1" />

列出项目布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp" >

<ImageView
    android:id="@+id/imgMenu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/makel_icon"
    android:contentDescription="@string/desc_mainMenuImages"
     />

<TextView
    android:id="@+id/txtMenu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="20dp"
    android:layout_toRightOf="@+id/imgMenu"
    android:textSize="14sp"
    android:textStyle="bold" />

我的自定义数组适配器

public class MenuListAdapter extends ArrayAdapter<MainMenuInfo> {

private List<MainMenuInfo> menuList;
private Context context;
private int layoutResourceID;

public MenuListAdapter(Context context, int layoutResourceID, List<MainMenuInfo> menuList) {
    super(context, layoutResourceID, menuList);

    this.context = context;
    this.menuList = menuList;
    this.layoutResourceID = layoutResourceID;
}

@Override
public int getCount() {

    return menuList.size();
}

@Override
public MainMenuInfo getItem(int position) {

    return menuList.get(position);
}

@Override
public long getItemId(int position) {

    return menuList.get(position).get_ID();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View view = convertView;

    if (view == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(layoutResourceID, null);
    }

    MainMenuInfo menu = menuList.get(position);

    ImageView imgMenu = (ImageView) view.findViewById(R.id.imgMenu);

    if (menu.getImageName() != null) {

        int r = view.getResources().getIdentifier(menu.getImageName(), "drawable", context.getPackageName());

        if (r > 0) {
            imgMenu.setImageResource(r);
        }
    }

    TextView txtMenu = (TextView) view.findViewById(R.id.txtMenu);

    txtMenu.setText(menu.getMenuName());

    return view;
}

}

1 个答案:

答案 0 :(得分:0)

我的问题解决了。上面的代码没有错误。我的错误在setDividerHeight属性中输入了错误的值。因此我的listview无法显示其他项目。谢谢。