1

Я пытаюсь использовать CheckedTextView с OnItemClickListener для того, чтобы иметь возможность нажать на элемент списка и «проверить» строку, которая была просто щелкнул. Я использую SimpleAdapter в файле SherlockListFragment. Состояние CheckedTextView будет сохранено в SharedPreferences для будущего использования пользователями в приложении.Использование CheckedTextView с setOnItemClickListener Ошибка

Я искал все, чтобы найти четкое решение, но я не понимаю. Мой код основан на: Listview with checkedtextview. Вот сообщение об ошибке я получаю:

"Метод setOnItemClickListener (новый AdapterView.OnItemClickListener() {}) не определено для типа View"

Я импортировать android.view.View.OnClickListener, android.widget.AdapterView.OnItemClickListener, android.widget.CheckedTextView, android.widget.AdapterView. Вот мой код:

Большое спасибо за вашу помощь!

общественного класса SettingsFragment расширяет SherlockListFragment реализует ActionBar.TabListener {

// Array of strings storing settings names 
String[] settings_names = new String[] { 
    "Bluetooth", 
    "Speakerphone", 
    "test3", 
    "test4" 
}; 

// Array of integers points to icons stored in /res/drawable-ldpi/ 
int[] settings_icons = new int[]{ 
    R.drawable.device_access_bluetooth, 
    R.drawable.device_access_call, 
    R.drawable.device_access_alarms, 
    R.drawable.device_access_location_found 
}; 

// Array of strings to store settings description 
String[] settings_desc = new String[]{ 
    "Activate Bluetooth connection", 
    "Enable Speakerphone", 
    "Enable ...", 
    "Enable ..." 
}; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 

    // 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<4;i++){ 
     HashMap<String, String> hm = new HashMap<String,String>(); 
     hm.put("set", settings_names[i]); 
     hm.put("desc", settings_desc[i]); 
     hm.put("icon", Integer.toString(settings_icons[i])); 
     aList.add(hm); 
    } 

    // Keys used in Hashmap 
    String[] from = { "icon","set","desc" }; 

    // Ids of views in settingsrow_layout 
    int[] to = { R.id.setting_icon,R.id.setting_name,R.id.setting_desc}; 


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

    /** Setting the array adapter to the listview */ 
    setListAdapter(adapter); 


    // The list is identify by and ID in the xml file   
    final View thelist = container.findViewById(android.R.id.list); 
    thelist.setOnItemClickListener(new OnItemClickListener(){ 
     public void onItemClick(AdapterView<?> parent, View view,int position,long id) { 
      View v = ((ViewGroup) thelist).getChildAt(position); 
      CheckedTextView ctv = (CheckedTextView) v.findViewById(R.id.setting_name); 
      ctv.setChecked(!ctv.isChecked()); 
     } 
    }); 


    LinearLayout mLinearLayout = (LinearLayout) inflater.inflate(R.layout.settingsfragment_layout, 
      container, false); 

    return mLinearLayout; 
} 

}

Вот файл XML-строки, используемый адаптером:

<?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/setting_icon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:contentDescription="@string/hello_world" 
    android:paddingTop="10dp" 
    android:paddingRight="10dp" 
    android:paddingBottom="10dp"/> 
<LinearLayout 
    android:id="@+id/center_text_zone" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

<CheckedTextView 
    android:id="@+id/setting_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="15sp" 
    android:textColor="#FFFFFF" 
    android:focusable="false" /> 

<TextView 
    android:id="@+id/setting_desc" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="12sp"/> 

</LinearLayout> 

</LinearLayout > 
+0

Я добавил файл XML, используемый адаптером. – JulienT

ответ

0

setOnItemClickListener Способ относится к AdapterView класс. AdapterView распространяется View.

Однако, ваш объект thelist не является объектом AdapterView, а вместо него является объект View. thelist - AdapterView.

Вы можете временно подавленным thelist при необходимости позже, как это:

(View) thelist = ...; 
(View) thelist.someMethod(args); 

 Смежные вопросы

  • Нет связанных вопросов^_^