set list view adapter in a fragment in android

匿名 (未验证) 提交于 2019-12-03 02:51:02

问题:

I want a custom row, so I am using a List View in an xml and inflating into a fragment. I am very confused of how to set the adapter for the list View. I created a new adapter which extends Base Adapter. In the getView method, I really don't know what context to pass while inflating the row.xml layout. How do I set the adapter for the list view and where?

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();         }     }   } 

回答1:

You must extend Listfragment (instead of Fragment), and using its ListFragment.setListAdapter to set your adapter. In the adapter getView() inflate your row.. that s all



回答2:

If you do not want to change your extended class, you should use listview.setAdapter(...) method. As you see in my example :

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); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!