0

решаемые в комментарий: Adding onListItemLick/onItemLongClick in a ListFragment Проблема была сгенерирована из ImageButton в расположение одного элемента в ListFragment, который был угон вход даже с focusable элементом, установленным в ложное, так что я пришлось удалить его из макета.Добавление onListItemLick/onItemLongClick в ListFragment

У меня есть ListFragment, заполненный расширенным классом SimpleCursorAdapter (в основном для переопределения метода newView), но я хотел добавить AlertDialog, когда пользователь нажимает (или долго нажимает) элемент в списке, сгенерированный адаптером. я судимый как onListItemClick и onItemLongClick с простой записью журнала, используя Log.d метод, но ничего не происходит, в обеих случаях, и я не знаю, где это проблема, так как код очень просто:

public class FragmentD extends ListFragment { 

private SQLiteDatabase db; 

@Override 
public void onActivityCreated (Bundle savedInstanceState) { 

    super.onActivityCreated(savedInstanceState); 

    myDatabase myDBHelper = new myDatabase(getActivity()); 
    db = myDBHelper.getWritableDatabase(); 

    Log.d("DB", "Insert fatto"); 

    String[] res_columns = new String[] {myDatabase.COLUMN2, myDatabase.COLUMN2,}; 
    String sortOrder = myDatabase.COLUMN1 + " DESC"; 

    String where = "*"; 

    Cursor testCursor = db.rawQuery("select * from " + database.DATABASE_TABLE, null); 

    myAdapter adapter = new myAdapter(getActivity(), 
      R.layout.list_element, 
      testCursor, 
      res_columns, 
      new int[] { }, 
      0); 

    setListAdapter(adapter); 
} 

@Override 
public void onListItemClick (ListView l, View v, int pos, long id) { 
    super.onListItemClick(l, v, pos, id); 
     Log.d("CLICK", "pressed"); 
    } 
+0

Попробуйте это; Изменить onListItemClick Для onItemClick – Want2bExpert

+0

@Arrigo Pierotti ... переопределить его – Jerry

+0

я удалил некоторые дополнительные вещи, необходимые для реализации 'onItemClick' вместо' onListItemClick' и '@ Override' был только отсутствует, когда я copyed и вставляли здесь. –

ответ

1

Отредактированного Ответ: Может быть, компоненты макета крали входа от других компонентов макета

+0

Я удалил лишние вещи, необходимые для реализации' onItemClick' вместо 'onListItemClick', а' @ Override' был только отсутствует, когда я копировал и вставлял здесь –

+0

О, так ли это доцент, даже если вы переопределите метод? – Jerry

+0

Нет, я отредактировал код в вопросе, так что это точный код, который я запускаю на своем эмуляторе (там, где дополнительные вещи) –

0

Добавить супер конструктор и переопределить его:

@Override 
public void onListItemClick (ListView l, View v, int pos, long id) { 
    super.onListItemClick(l, v, pos, id); 
    Log.d("CLICK", "pressed"); 
} 

EDIT: попробуйте этот код

public class FragmentD extends ListFragment { 

private SQLiteDatabase db; 

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

    View v = inflater.inflate(YOUR LISTFRAGMENT LAYOUT HERE, container, false); 

    myDatabase myDBHelper = new myDatabase(getActivity()); 
    db = myDBHelper.getWritableDatabase(); 

    Log.d("DB", "Insert fatto"); 

    String[] res_columns = new String[] {myDatabase.COLUMN2, myDatabase.COLUMN2,}; 
    String sortOrder = myDatabase.COLUMN1 + " DESC"; 

    String where = "*"; 

    Cursor testCursor = db.rawQuery("select * from " + database.DATABASE_TABLE, null); 

    myAdapter adapter = new myAdapter(getActivity(), 
      R.layout.list_element, 
      testCursor, 
      res_columns, 
      new int[] { }, 
      0); 

    setListAdapter(adapter); 

    return v; 
} 

@Override 
public void onListItemClick (ListView l, View v, int pos, long id) { 
    super.onListItemClick(l, v, pos, id); 
    Log.d("CLICK", "pressed"); 
} 
+0

Я удалил реализацию и getListView, так как они там, где для 'onItemClick' и @override отсутствовали только здесь (я должен был сделать небольшое редактирование при копировании и вставке здесь), но ничего не изменилось, все еще нет знака в Log ... –

+0

Вы забыли супер-конструктор и удалили это -> реализует AdapterView.OnItemClickListener – user3641702

+0

Добавлен супер-конструктор (мой плохой для того, чтобы не добавлять его в код в начале) и все еще не работает –

0

У меня есть идти т два раствора

  1. Просто Override onListItemClick

    @Override общественные недействительный onListItemClick (ListView л, Вид v, внутр положение, длинный идентификатор) { super.onListItemClick (л, v, должность, идентификатор) ;

    Log.i("position",position); 
    

    }

  2. На макете корня. Добавьте этот код

    андроида: descendantFocusability = «blocksDescendants»

Надеется, что это помогает

+0

Я удалил лишний лишний материал для реализации 'onItemClick' вместо' onListItemClick', а '@ Override' отсутствовал только при копировании и вставке здесь –