【问题标题】:set list view adapter in a fragment in android在android的片段中设置列表视图适配器
【发布时间】:2011-11-28 22:11:34
【问题描述】:

我想要一个自定义行,所以我在 xml 中使用一个列表视图并膨胀到一个片段中。我很困惑如何为列表视图设置适配器。 我创建了一个扩展基本适配器的新适配器。在 getView 方法中,我真的不知道在填充 row.xml 布局时要传递什么上下文。 如何设置列表视图的适配器以及在哪里?

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());我认为这应该可行。

标签: android listview adapter fragment


【解决方案1】:

您必须扩展Listfragment(而不是Fragment),并使用它的ListFragment.setListAdapter 来设置您的适配器。在适配器getView() 中为您的行充气.. 仅此而已

【讨论】:

  • 无法对 ListFragment 类型的非静态方法 setListAdapter(ListAdapter) 进行静态引用
  • @SureshParmar,它不是静态方法。如果你扩展ListFragment,方法在this
【解决方案2】:

如果你不想改变你的扩展类,你应该使用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);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多