在Android中的一个Fragment中设置列表视图适配器

13

我想要自定义一行,所以我在XML中使用了ListView并将其填充到一个碎片中。我非常困惑如何为ListView设置适配器。 我创建了一个继承自BaseAdapter的新适配器。在getView方法中,我真的不知道在填充row.xml布局时要传递什么上下文。 我应该在哪里为ListView设置适配器?

public class ResultsFragment extends Fragment{


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.results_layout, container, false);
        listView = (ListView)v.findViewById(R.id.results);
        return v;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);


        loadPage(dataBean.getWhat(), dataBean.getWhere(), dataBean.getPageStart());

        //resultsAdapter.setRssData(rssData);
        //setListAdapter(resultsAdapter);
    }

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        Context context = getActivity().getApplicationContext();
        resultsAdapter = new ResultsAdapter(context);
    }





    /**
     * Set List Adapter
     */
    private void setAdapter(){
        if(listView.getAdapter() == null){
            listView.setAdapter(resultsAdapter);
        }
        else{
            resultsAdapter.notifyDataSetChanged();
        }
    }


}

ResultsAdapter(getActivity()); 我觉得这应该可以工作。 - Yashwanth Kumar
2个回答

18

为了设置适配器,您必须扩展ListFragment(而不是Fragment),并使用其ListFragment.setListAdapter来设置适配器。在适配器的getView()方法中膨胀(inflate)您的行程...就这些。


无法从ListFragment类型中对非静态方法setListAdapter(ListAdapter)进行静态引用。 - Suresh Parmar
1
@SureshParmar,这不是一个静态方法。如果您正在扩展ListFragment,则该方法在this上。 - Blackbelt

10

如果您不想更改您的扩展类,您应该使用 listview.setAdapter(...) 方法。正如您在我的示例中看到的:

ListView productList= (ListView) getActivity().findViewById(R.id.product_list);


    SampleAdapter adapter = new SampleAdapter(getActivity());


    adapter.add(new SampleItem(
            "Sunny LCD TV 2\"  SN022L66-T1 Full HD",
            R.drawable.product_sample_pic);


    productList.setAdapter(adapter);

@Johnson 页面未找到 :( - Ahmed Faisal
已经解决了,但是请帮我看看这个问题:http://stackoverflow.com/questions/29446088/how-to-get-alert-dialog-spinner-values-in-textview - user4050065

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接