2013-04-05 1 views
0

ListFragment를 사용하고 있지만 목록 뷰를 표시하려면 조각을 사용해야합니다. ListFragment plz 대신 Fragment를 어떻게 사용합니까? 또한 사용하는 것이 더 나은 설명을 해주십시오. 내가 사용하려는 *이 확장 ListFragment *조각 대신 ListFragment 확장

import java.util.ArrayList; 

import android.app.Activity; 
import android.app.ListFragment; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ListView; 
import android.widget.Toast; 

public class CountryListFragment extends ListFragment{ 

    ArrayList<Video> videos; 
    Activity mactivity; 

    /** List of countries to be displayed in the ListFragment */ 

    ListFragmentItemClickListener ifaceItemClickListener; 

    /** An interface for defining the callback method */ 
    public interface ListFragmentItemClickListener { 
     /** This method will be invoked when an item in the ListFragment is clicked */ 
     void onListFragmentItemClick(int position); 
    } 

    /** A callback function, executed when this fragment is attached to an activity */ 
    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     mactivity=activity; 

     try{ 
      /** This statement ensures that the hosting activity implements ListFragmentItemClickListener */ 
      ifaceItemClickListener = (ListFragmentItemClickListener) activity;   
     }catch(Exception e){ 
      Toast.makeText(activity.getBaseContext(), "Exception",Toast.LENGTH_SHORT).show(); 
     } 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     new SubTask().execute(); 
    } 

    private class SubTask extends AsyncTask<Void, Void, ArrayList<Video>>{ 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 
     } 

     @Override 
     protected ArrayList<Video> doInBackground(Void... params) { 
      //Crearte instance to http call 
      GetHttpCall getCall=new GetHttpCall(); 
      String response=null; 
      try { 
       response=getCall.connect(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      JSONParser _parser=new JSONParser(); 
      _parser.parseHttpJson(response); 

      String [] item = JSONParser.num_title; 
      int []id=JSONParser.num_id; 

      videos=new ArrayList<Video>(); 

      for(int i=0;i<item.length;i++) 
      { 
       Video vid=new Video(); 
       vid.setTitle(item[i]); 
       vid.setId(id[i]); 

       videos.add(vid); 
      } 

      return videos; 
     } 

     @Override 
     protected void onProgressUpdate(Void... values) { 
      // TODO Auto-generated method stub 
      super.onProgressUpdate(values); 
     } 

     @Override 
     protected void onPostExecute(ArrayList<Video> result) { 
      super.onPostExecute(result); 
      BindDataAdapter adapter = new BindDataAdapter(mactivity, videos); 
      setListAdapter(adapter); 
     } 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) {  
     /** Invokes the implementation of the method onListFragmentItemClick in the hosting activity */ 
     ifaceItemClickListener.onListFragmentItemClick(position); 
    } 
} 
+1

"하지만 목록보기를 표시하기 위해 조각을 사용해야합니다"- 이유가 무엇입니까? – CommonsWare

+0

단지 diffrence를보고 싶습니다. – Nik

답변

0

체크 아웃 this

은, 당신의 IDE에서 프로젝트를 만들고 샘플 응용 프로그램 'TestBedDSLV'을보고는 'DSLVFragment'사용하는 방법을 복제하는 대신 조각을 확장 및 ListFragment.