在android的片段中设置列表视图适配器
Posted
技术标签:
【中文标题】在android的片段中设置列表视图适配器【英文标题】:set list view adapter in a fragment in 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());我认为这应该可行。 【参考方案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);
【讨论】:
@Johnson 页面未找到 :( 它解决了,但请帮我解决这个问题***.com/questions/29446088/…以上是关于在android的片段中设置列表视图适配器的主要内容,如果未能解决你的问题,请参考以下文章