2013-07-20 5 views
2
을 LazyAdapter에 LazyAdapter (android.app.Activity에서, ArrayList를이>) (com.example.app.CustomizedListView, ArrayList를>)에 적용 할 수 없습니다

ArrayList를 적용 할 수없는 - 안드로이드

내가하는 방법에 대한 몇 가지 입력을 가질 수 이 오류를 수정하거나 수정해야 할 내용을 수정하십시오. 나는 당신이 필요로 할지도 모르는 다른 파일이 무엇인지 모르겠지만 무엇이 잘못되었는지 전혀 모른다. 읽어 주셔서 감사합니다.

CustomizedListView.class :

public class CustomizedListView extends Fragment { 
// All static variables 
static final String URL = "http://api.androidhive.info/music/music.xml"; 
// XML node keys 
static final String KEY_SONG = "song"; // parent node 
static final String KEY_ID = "id"; 
static final String KEY_TITLE = "title"; 
static final String KEY_ARTIST = "artist"; 
static final String KEY_DURATION = "duration"; 
static final String KEY_THUMB_URL = "thumb_url"; 

ListView list; 
LazyAdapter adapter; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    final View v = inflater.inflate(R.layout.main, container, false); 
    getActivity().findViewById(R.id.game_list); 

} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 

    XMLParser parser = new XMLParser(); 
    String xml = parser.getXmlFromUrl(URL); // getting XML from URL 
    Document doc = parser.getDomElement(xml); // getting DOM element 

    NodeList nl = doc.getElementsByTagName(KEY_SONG); 
    // looping through all song nodes <song> 
    for (int i = 0; i < nl.getLength(); i++) { 
     // creating new HashMap 
     HashMap<String, String> map = new HashMap<String, String>(); 
     Element e = (Element) nl.item(i); 
     // adding each child node to HashMap key => value 
     map.put(KEY_ID, parser.getValue(e, KEY_ID)); 
     map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE)); 
     map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST)); 
     map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION)); 
     map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL)); 

     // adding HashList to ArrayList 
     songsList.add(map); 
    } 




    // Getting adapter by passing xml data ArrayList 
    adapter=new LazyAdapter(this, songsList); 
    list.setAdapter(adapter); 


    // Click event for single list row 
    list.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 


     } 
    }); 
} 
} 

LazyAdapter.class :

public class LazyAdapter extends BaseAdapter { 

private Activity activity; 
private ArrayList<HashMap<String, String>> data; 
private static LayoutInflater inflater=null; 
public ImageLoader imageLoader; 

public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) { 
    activity = a; 
    data=d; 
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    imageLoader=new ImageLoader(activity.getApplicationContext()); 
} 

public int getCount() { 
    return data.size(); 
} 

public Object getItem(int position) { 
    return position; 
} 

public long getItemId(int position) { 
    return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi=convertView; 
    if(convertView==null) 
     vi = inflater.inflate(R.layout.list_row, null); 

    TextView title = (TextView)vi.findViewById(R.id.title); // title 
    TextView artist = (TextView)vi.findViewById(R.id.artist); // artist name 
    TextView duration = (TextView)vi.findViewById(R.id.duration); // duration 
    ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image 

    HashMap<String, String> song = new HashMap<String, String>(); 
    song = data.get(position); 

    // Setting all values in listview 
    title.setText(song.get(CustomizedListView.KEY_TITLE)); 
    artist.setText(song.get(CustomizedListView.KEY_ARTIST)); 
    duration.setText(song.get(CustomizedListView.KEY_DURATION)); 
    imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image); 
    return vi; 
} 
} 

답변

2

adapter=new LazyAdapter(this, songsList); 

으로 교체

adapter=new LazyAdapter(getActivity(), songsList); 

getActivity()을 사용하면 조각을 호스팅하는 활동의 활동 컨텍스트를 얻을 수 있습니다.

특히 fragmentgetActivity()으로 Activity instance에 액세스 할 수 있습니다. 11

반환이 단편은 현재와 연관된 활동 API 레벨

public final Activity getActivity()

추가.

+0

고맙습니다. 나는 getActivity를 사용하는 것을 잊었다. – ThePoloDoc

+0

@PhePolDoc pls가 답변을 수락하는 데 도움이된다면 환영합니다. – Raghunandan

관련 문제