gpt4 book ai didi

android - 使用自定义 CursorAdapter 获取列表中点击和自定义按钮的位置

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:19 24 4
gpt4 key购买 nike

场景 friend 们,我有一个 ListView,我在 FrameLayout 中使用它,它将为我的 DrawerLayout 提供滑动菜单。我的 ListView 中有自定义按钮和文本,它们在单独的 xml 中定义为列表项。现在,我使用扩展了 CursorAdapter 的 customAdapter 向此 ListView 提供数据...

我想获取点击的位置以及按钮点击事件以相应地获取数据......我的代码如下......

列表项 XML

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


<!-- ToggleButton
android:id="@+id/button"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_margin="10dp"
style="@style/toggleButton"
android:background="@drawable/silent_button_selector"
android:focusable="false"
/> -->

<ImageButton
android:id="@+id/button"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_margin="10dp"
android:src="@drawable/icon_button"
/>


<TextView
android:id="@+id/calendarName"
android:layout_width="wrap_content"
android:layout_margin="10dp"
android:layout_height="wrap_content"
android:textSize="25sp"
android:layout_toRightOf="@+id/button"
/>


</RelativeLayout>

适配器类:

public class CalendarListAdapter extends CursorAdapter implements OnClickListener{

@SuppressWarnings("deprecation")
public CalendarListAdapter(Context context, Cursor c) {
super(context, c);
// TODO Auto-generated constructor stub
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
// TODO Auto-generated method stub
TextView title = (TextView) view.findViewById(R.id.calendarName);
System.out.println("cursor details"
+ cursor.getString(cursor.getColumnIndex(cursor
.getColumnName(1))));
title.setText(cursor.getString(cursor.getColumnIndex(cursor
.getColumnName(1))));
Log.d("click position " , "position is " +cursor.getPosition() );
ImageButton button = (ImageButton) view.findViewById(R.id.button);
button.setOnClickListener(this);
Log.d("click position " , "position is " +cursor.getPosition() );
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(context.LAYOUT_INFLATER_SERVICE);

View calendarListView = inflater.inflate(R.layout.calendar_list_item, null);

return calendarListView;
}

@Override
public void onClick(View view) {
// TODO Auto-generated method stub

Log.d("item clicked", "clicked" );

}

}

现在发生了什么:

通过上述实现,当我点击按钮时,它只提供按钮点击事件,当我点击行/列表项时,我单独获得位置。

我需要做什么?

我需要同时获取位置和点击事件,所以当我点击第 3 行的按钮时,我需要位置 3 和按钮点击事件...

请告诉我最好的方法...感谢您的时间和努力..

最佳答案

处理您的场景的简单方法是利用按钮标记

在你的 bindView 中

ImageButton button = (ImageButton) view.findViewById(R.id.button);
button.setTag(cursor.getPosition());

然后在您的 onClick 中您可以读取标签

int position = (Integer) view.getTag();

关于android - 使用自定义 CursorAdapter 获取列表中点击和自定义按钮的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23236948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com