ListView - subitem onClick()阻止onItemClick()

时间:2013-02-17 00:21:05

标签: java android android-layout android-listview android-cursoradapter

我正在扩展CursorAdapter以将数据绑定到ListView中的视图。当项目中的子视图具有onClick()侦听器时,不会为该行调用onItemClick()。我希望调用子视图的onClick()方法,调用onItemClick()方法,触摸时要突出显示的行(默认情况下,当子视图没有{{1}时附上)。其他触摸方法(如onClickListener())返回onLongClick(),指示触摸事件是否已被使用,但boolean方法返回void,并且表现得好像{{1}返回onClick()

在我的activity_main.xml中,我有:

boolean

对于填充true

的观点
<ListView ...[attributes] ...
    android:id="@+id/stations" >    
</ListView>

和我的ListView班级:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout ...[attributes] ... >   
    <ImageView
        ...[attributes] ...
        android:id="@+id/station_drag" />
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        ...[attributes] ...
        android:id="@+id/station_title" >
    </TextView>
</RelativeLayout>

我已尝试获取CursorAdapter的父级及其父级,并手动调用public class RadioCursorAdapter extends CursorAdapter { protected Activity mContext; public RadioCursorAdapter(Activity context, Cursor c, int flags) { super(context, c, flags); this.mContext = context; } @Override public void bindView(View view, Context context, Cursor cursor) { TextView titleView = (TextView) view.findViewById(R.id.station_title); final String url = cursor.getString(cursor.getColumnIndexOrThrow(RadioDbContract.StationEntry.COLUMN_NAME_URL)); titleView .setText(cursor.getString(cursor.getColumnIndexOrThrow(RadioDbContract.StationEntry.COLUMN_NAME_TITLE))); // commenting out the following makes the listView's onItemClickListener // work, and row highlights while pressed titleView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // this part works when the text is clicked, but prevents // onItemClick in listview } }); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { final LayoutInflater inflater = LayoutInflater.from(mContext); View v = inflater.inflate(R.layout.station_entry, null); return v; } } ,但这似乎不起作用,titleView是一个不同的处理程序。 我在视图层次结构的每个级别尝试了onClick()onItemClick()android:descendantFocusability的每个组合,我可以想到。

请将其他评论中的任何答案与我可能采取的不同做法分开(比如不为每个视图创建新的听众?)

<小时/> 修改

android:focusableandroid:clickable似乎都会阻止setOnClickListener()在短暂点击时触发,无论setOnLongClickListener()是返回true还是false。 此外,要触发onItemClick()的子视图,setOnLongClickListener()的{​​{1}}应设置为onItemClick(),并且应设置子视图'RelativeLayoutandroid:descendantFocusability。似乎没有其他任何工作或有任何影响。

0 个答案:

没有答案