마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ListFragment 에서 onItemClick 사용 하는 방법좀 알려주세요!! 4일쨰 해결못하고있습니다...

–2 추천

리스트뷰에 setOnItemClickListener 를 주어 이벤트를 주려고합니다..

아래와 같이 빨간색으로 칠한부분 ListView lv = getListView(); 를 추가하려하면

오류는 나지 않으나, 어플 실행시에는 바로 종료되버립니다..

클릭 이벤트를 주지 않기위해 빨간부분을 삭제하면 잘되요...

import android.os.Bundle;  
import android.os.StrictMode;  
import android.support.v4.app.ListFragment;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.ListAdapter;  
import android.widget.SimpleAdapter;  
    
import org.w3c.dom.Document;  
import org.w3c.dom.Element;  
import org.w3c.dom.NodeList;  
    
import java.util.ArrayList;  
import java.util.HashMap;  
    
public class Main_talkActivity extends ListFragment {  
    
    static final String URL = "~~~url주소~~~";  
    
    static final String KEY_ITEM = "item"; // parent node  
    static final String KEY_NAME = "name";  
    static final String KEY_DATE = "date";  
    static final String KEY_CONTENT = "content";  
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
                             Bundle savedInstanceState) {  
        View talkview = inflater.inflate(R.layout.main_talk, container,false);  
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitNetwork().build());  
        listview();  
    
        return talkview;  
    }  
    
    public void listview(){  
    
        ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();  
    
        XMLParser parser = new XMLParser();  
        String xml = parser.getXmlFromUrl(URL);  
        Document doc = parser.getDomElement(xml);  
    
        NodeList nl = doc.getElementsByTagName(KEY_ITEM);  
        // looping through all item nodes <item>  
        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);  
    
            map.put(KEY_NAME, parser.getValue(e, KEY_NAME));  
            map.put(KEY_DATE, parser.getValue(e, KEY_DATE));  
            map.put(KEY_CONTENT, parser.getValue(e, KEY_CONTENT));  
    
            menuItems.add(map);  
        }  
    
        ListAdapter adapter = new SimpleAdapter(getActivity(), menuItems,  
                R.layout.main_talk_lv,  
                new String[] { KEY_NAME, KEY_DATE, KEY_CONTENT }, new int[] {  
                R.id.talk_name, R.id.talk_date, R.id.talk_content });  
    
        setListAdapter(adapter);  
    
 ListView lv = getListView();  
 lv.setOnItemClickListener(new OnItemClickListener() {  
    
   @Override
   public void onItemClick(AdapterView<?> parent, View view,  
     int position, long id) {  
    클릭할시 이벤트  
   }  
 });  
    
    }  
    
}

ListView lv = getListView(); 
 lv.setOnItemClickListener(new OnItemClickListener() { 
   
   @Override
   public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
    클릭할시 이벤트 
   } 
 });

 

 

 

 

비밀소년 (1,010 포인트) 님이 2015년 6월 1일 질문
오류날때 오류로그를 올려주세요~

2개의 답변

0 추천
xml의 list view의 id를 @android:id/list 로 주는걸 잊은 건 아니겠죠?
쎄미 (162,410 포인트) 님이 2015년 6월 1일 답변
네 @android:id/list로 줬습니다!!
근데 되질않네요 ㅜㅜ
보면 getListView(); 만으로도 에러가 나버립니다.
허나 ListView lv = getListView();
 lv.setOnItemClickListener(new OnItemClickListener() {
   
   @Override
   public void onItemClick(AdapterView<?> parent, View view,
     int position, long id) {
    클릭할시 이벤트
   }
 }); 를 삭제하면 클릭이벤트 없이는 잘 돌아갑니다...
0 추천
ListView lv = getactivity().getlistview

해보십셔
익명 님이 2015년 6월 5일 답변
...