Java 使用listView片段的Android代码

Java 使用listView片段的Android代码,java,android,listview,android-fragments,Java,Android,Listview,Android Fragments,因此,我的代码在片段中遇到了一些问题,“super(FragmentDishcover.this,R.layout.listviewdishcover,LV_Dishcover);”一行出现了红线。我在网上复制了它的大部分文件,但不知道“getLayoutInflater()”是干什么用的。我以为这是一门新课或什么的,但如果你愿意,我们可以告诉我 我那支离破碎的班级 public class FragmentD extends Fragment { public FragmentD()

因此,我的代码在片段中遇到了一些问题,“super(FragmentDishcover.this,R.layout.listviewdishcover,LV_Dishcover);”一行出现了红线。我在网上复制了它的大部分文件,但不知道“getLayoutInflater()”是干什么用的。我以为这是一门新课或什么的,但如果你愿意,我们可以告诉我

我那支离破碎的班级

public class FragmentD extends Fragment {

    public FragmentD(){}

    private List<NavItemViewlistD> LV_D = new ArrayList<NavItemViewlistD>();

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_d, container, false);

        populateListViewD();
        populateListView();

        return rootView;
    }
    private void populateListViewD(){
        LV_D.add(new NavItemViewlistD("Trololololol", R.drawable.kittylogotemp, R.drawable.ic_paw_white, 10));
        LV_D.add(new NavItemViewlistD("booom", R.drawable.kittylogotemp, R.drawable.ic_paw_white, 20));
        LV_D.add(new NavItemViewlistD("ahahahaha", R.drawable.kittylogotemp, R.drawable.ic_paw_white, 30));
    }
    private void populateListView(){
        ArrayAdapter<NavItemViewlistD> adapter = new dListAdapter();
        ListView list = (ListView) getActivity().findViewById(R.id.listViewD);
        list.setAdapter(adapter);
    }
    private class dListAdapter extends ArrayAdapter<NavItemViewlistD>{
        private dListAdapter(){
            super(FragmentD.this, R.layout.listviewd, LV_D);
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent){
            View itemView = convertView;
            if(itemView == null){
                itemView = getLayoutInflater().inflate(R.layout.listviewd, parent, false);

            }

            return itemView;

        }

    }
}

您的做法是错误的。我建议您不要在fragment中包含适配器。请像这样作为单独的类使用

           public class SampAdapter extends ArrayAdapter<Contact> {

/**
 * @param context
 * @param resource
 * @param objects
 */
public SampAdapter(Context context, int resource, Contact[] objects) {
    super(context, resource, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    return super.getView(position, convertView, parent);
}

@Override
public int getCount() {
    return super.getCount();
}

如果它不起作用,请更改基本适配器并使用上下文编写自己的构造函数,然后尝试使用ArrayObject。

我认为这将有助于创建java类适配器来调用这些项

public class DListViewAdapter extends ArrayAdapter<DListView> {

    public DListViewAdapter(Context context, List<DListView> items) {
        super(context, R.layout.listviewd, items);
    }

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

        if(convertView == null) {
            // inflate the GridView item layout
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.listviewd, parent, false);

            // initialize the view holder
            viewHolder = new ViewHolder();
            viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.icon);
            viewHolder.tvTitle = (TextView) convertView.findViewById(R.id.title);
            viewHolder.tvpoints = (TextView) convertView.findViewById(R.id.points);
            convertView.setTag(viewHolder);
        } else {
            // recycle the already inflated view
            viewHolder = (ViewHolder) convertView.getTag();
        }

        // update the item view
        DListView item = getItem(position);
        viewHolder.ivIcon.setImageDrawable(item.iconAdapter);
        viewHolder.tvTitle.setText(item.titleAdapter);
        viewHolder.tvpoints.setText(item.pointsAdapter);

        return convertView;
    }

    private static class ViewHolder {
        ImageView ivIcon;
        TextView tvTitle;
        TextView tvDescription;
    }
}
并创建布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listViewD"
        android:layout_centerHorizontal="true" />
</RelativeLayout>


我有点忘了在片段上放什么:(

替换为getactivity(),而不是FragmentD.this.和private dListAdapter(Context Context,int resource,ArrayAdapter[]LV_D){super(Context,R.layout.listviewd,LV_D);像这样更改。}getactivity()变红:(还有getLayoutInflater()是reduse context.getLayoutInflater()sir ram它只是变红了:(我的头要爆炸XDSir变红了sir如何设置我的数组对象?你能解释一下如何将我的listview放入我的片段中吗?View rootView=inflater.inflate(R.layout.fragment_d,container,false);listview contentlistD=(listview)rootView.findViewById(R.id.ItemListView\u D);NavItemListAdapter ad=新NavItemListAdapter(getActivity(),R.layout.listviewd,YourArrayObject);在“YourArrayObject”中放什么?等一下,您刚刚使用了我发布的链接>_
public class DListViewAdapter extends ArrayAdapter<DListView> {

    public DListViewAdapter(Context context, List<DListView> items) {
        super(context, R.layout.listviewd, items);
    }

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

        if(convertView == null) {
            // inflate the GridView item layout
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.listviewd, parent, false);

            // initialize the view holder
            viewHolder = new ViewHolder();
            viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.icon);
            viewHolder.tvTitle = (TextView) convertView.findViewById(R.id.title);
            viewHolder.tvpoints = (TextView) convertView.findViewById(R.id.points);
            convertView.setTag(viewHolder);
        } else {
            // recycle the already inflated view
            viewHolder = (ViewHolder) convertView.getTag();
        }

        // update the item view
        DListView item = getItem(position);
        viewHolder.ivIcon.setImageDrawable(item.iconAdapter);
        viewHolder.tvTitle.setText(item.titleAdapter);
        viewHolder.tvpoints.setText(item.pointsAdapter);

        return convertView;
    }

    private static class ViewHolder {
        ImageView ivIcon;
        TextView tvTitle;
        TextView tvDescription;
    }
}
public class DListView {
    public final Drawable iconAdapter;
    public final String titleAdapter;
    public final String pointsAdapter;

    public DListView(Drawable icon, String title, String points) {
        this.iconAdapter = icon;
        this.titleAdapter = title;
        this.pointsAdapter = points;
    }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listViewD"
        android:layout_centerHorizontal="true" />
</RelativeLayout>