Я пытаюсь поместить кнопку в каждый элемент списка. Это идея:setOnItemClickListener не работает для кнопки в ListView
Текст1 ____________ [BTN]
Text2 ____________ [BTN]
и т.д ...
XML, для элементов является:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:id="@+id/list_item_textview"/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/deleteButton"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="@null"
android:clickable="true"
android:focusable="false"
android:src="@drawable/ic_delete_black_24dp"/>
</RelativeLayout>
Есть два действия, разделяющие один и тот же фрагмент. Этот фрагмент использует SimpleCursorAdapter для извлечения данных из базы данных. Это работает отлично.
После создания и установки адаптера я пытаюсь найти кнопку и сделать setOnClickListener. Это не работает.
Вот код для метода onCreateView во фрагменте:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_item_scroll, container, false);
ListView listView = (ListView) rootView.findViewById(R.id.listview_item);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
getActivity(),
R.layout.list_item,
((ListItems)getActivity()).getCursor(1,1),
new String[] {((ListItems) getActivity()).getColumnName()},
new int[] {R.id.list_item_textview}, 0);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getActivity(), ((ListItems) getActivity()).getGoToClass());
intent.putExtra("apiary_id",(int) id);
intent.putExtra("hive_id", -1);
startActivity(intent);
}
});
/* SOMEWHERE BELOW IS THE PROBLEM */
View list_item_view = inflater.inflate(R.layout.list_item, container, false);
ImageButton deleteButton = (ImageButton) list_item_view.findViewById(R.id.deleteButton);
System.out.println("====================>" + deleteButton.toString()); //This prints something which includes the id of the button, so it is finding it.
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("THIS IS NOT WORKING!!!!");
}
});
return rootView;
}
Это мой первый андроид приложение, и я с этой проблемой в течение нескольких дней теперь без какого-либо прогресса. Любые намеки приветствуются!
спасибо!
Попробуйте? http://stackoverflow.com/questions/11428303/android-cant-click-on-listview-row-with-imagebutton – Andro
Спасибо за ваш комментарий. Однако это не моя проблема. Я могу нажать кнопку, а также элементы списка. Проблема в том, что, хотя я могу нажать кнопку, кнопка не будет запускать SetOnClickListener. –
попробуйте сначала зарегистрировать log.e («сообщение», «ваше сообщение»); 'вместо s.o.p, а затем проверить, отображается ли там сообщение –