我尝试使用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;
}
}
答案 0 :(得分:0)
我的问题解决了。上面的代码没有错误。我的错误在setDividerHeight属性中输入了错误的值。因此我的listview无法显示其他项目。谢谢。