2014-07-05 2 views
0

저는 새롭고 FragmentList를 사용하고 있습니다. 나는 클릭 이벤트를 원합니다. 내가 어떻게 할 수 있니? 렸기 때문에 클릭 :( 을 내가 하나의 게시물과에 아무것도 읽을 때문에 거짓으로 포커스를 텍스트 뷰를 넣어 노력했다.클릭 수신기를 ListFragment에 구현하십시오.

public class FgShopsInfoList extends ListFragment implements OnItemClickListener { 
String[] countries = new String[] { 
    "India", 
    "Pakistan", 
    "Sri Lanka", 
    "China", 
    "Bangladesh", 
    "Nepal", 
    "Afghanistan", 
    "North Korea", 
    "South Korea", 
    "Japan" 
}; 

// Array of integers points to images stored in /res/drawable/ 
int[] flags = new int[]{ 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher, 
    R.drawable.ic_launcher 
}; 

// Array of strings to store currencies 
String[] currency = new String[]{ 
    "Indian Rupee", 
    "Pakistani Rupee", 
    "Sri Lankan Rupee", 
    "Renminbi", 
    "Bangladeshi Taka", 
    "Nepalese Rupee", 
    "Afghani", 
    "North Korean Won", 
    "South Korean Won", 
    "Japanese Yen" 
}; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_shops_info_list, container,false); 

    // Each row in the list stores country name, currency and flag 
    List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>(); 

    for(int i=0;i<10;i++){ 
     HashMap<String, String> hm = new HashMap<String,String>(); 
     hm.put("txt", "Country : " + countries[i]); 
     hm.put("cur","Currency : " + currency[i]); 
     hm.put("flag", Integer.toString(flags[i])); 
     aList.add(hm); 
    } 

    // Keys used in Hashmap 
    String[] from = { "flag","txt","cur" }; 

    // Ids of views in listview_layout 
    int[] to = { R.id.flag,R.id.txt,R.id.cur}; 

    // Instantiating an adapter to store each items 
    // R.layout.listview_layout defines the layout of each item 
    SimpleAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), aList, R.layout.fragment_shops_info_list, from, to); 


    setListAdapter(adapter); 



    return super.onCreateView(inflater, container, savedInstanceState); 
} 

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, 
     long id) { 
    Log.e("Xx","A"); 

} 
} 

그리고 레이아웃을 드 캡처하지 않습니다 내 onitemclick

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 

<ImageView 
    android:id="@+id/flag" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:contentDescription="XXXXX" 
    android:paddingTop="10dp" 
    android:paddingRight="10dp" 
    android:paddingBottom="10dp" 

    /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/txt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="15dp" 
    /> 


    <TextView 
     android:id="@+id/cur" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="10dp" 

     /> 

</LinearLayout> 

</LinearLayout> 
+1

코드에 따르면 목록이 보이지 않는다고 생각합니다. super.onCreateView보다는보기를 반환해야합니다 ...... 변경 라인 반환 super.onCreateView (inflater, container, savedInstanceState); 보기를 반환하는 – Hasandroid

답변

0

이 방법

@Override 
public void onListItemClick(ListView l, View v, int pos, long id) { 
super.onListItemClick(l, v, pos, id); 
//do something here 
} 

This 문서가 사용합니다.

이 메서드는 목록의 항목을 선택하면 호출됩니다. 서브 클래스는 오버라이드 (override)됩니다. 서브 클래스는 선택된 항목에 관련된 데이터에 액세스해야하는 경우 getListView(). getItemAtPosition (position)을 호출 할 수 있습니다.

매개 변수

리터 클릭리스트 뷰에서 클릭 한

V 뷰 일어난 목록보기

위치 목록에서 뷰의 위치

id 클릭 한 항목의 행 ID

관련 문제