установить список просмотра адаптера в фрагмент в Android - PullRequest
13 голосов
/ 01 октября 2011

Мне нужна пользовательская строка, поэтому я использую представление списка в 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();
        }
    }


}

Ответы [ 2 ]

18 голосов
/ 01 октября 2011

Вы должны расширить Listfragment (вместо Fragment) и использовать его ListFragment.setListAdapter для настройки адаптера.В адаптере getView() накачай свой ряд .. вот и все

10 голосов
/ 29 апреля 2013

Если вы не хотите менять свой расширенный класс, вам следует использовать метод 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...