【问题标题】:ListView's click listener does not workListView 的点击监听器不起作用
【发布时间】:2013-07-25 02:52:36
【问题描述】:

我在 Activity 中有带有自定义 SimpleCursorAdapter 的 ListView:

public class MyListActivity extends Activity { ... }

mCursorAdapter = new MyCursorAdapter(mContext,
     R.layout.listview_item01, mCursor, from, to);
mainLayout = (RelativeLayout) findViewById(R.id.main_layout);

mListView = new ListView(mContext);
mListView.setAdapter(mCursorAdapter);
mListView.setOnItemClickListener(new OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> arg0, View view,
          int position, long arg3) {
          Toast.makeText(getApplicationContext(),
               "You Selected Item " + Integer.toString(position),
               Toast.LENGTH_LONG).show();
          Log.v("onItemClick", "CLICK!");
    }
});
mainLayout.addView(mListView);

我的简单适配器:

private class MyCursorAdapter extends SimpleCursorAdapter {

     public MyCursorAdapter(Context context, int layout, Cursor c,
          String[] from, int[] to) {
          super(context, layout, c, from, to);
     }

     @Override
     public View getView(int position, View convertView, ViewGroup parent) {
          View view = super.getView(position, convertView, parent);
          if (position % 2 == 0) {
               view.setBackgroundColor(Color.rgb(238, 233, 233));
          } else {
               view.setBackgroundColor(Color.rgb(255, 255, 255));
          }
          return view;
     }
}

我的列表视图项:

<?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" >
    <RadioButton
        android:id="@+id/item_radiobutton01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />
    <TextView
        android:id="@+id/item_textview01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/item_radiobutton01"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/item_radiobutton01"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>

我所看到的:

我的 ListView 看起来不错,但是如果我单击任何项​​目,那么什么都不会发生。为什么?请帮帮我

【问题讨论】:

    标签: android listview click simplecursoradapter


    【解决方案1】:

    我认为这是因为您的布局项目。尝试使用以下方法禁用它们的可点击性:

        android:focusable="false"
        android:focusableInTouchMode="false"
    

    我认为当您单击一个项目时,您实际上并没有单击该行,而是单击了 TextView 或 RadioButton;您也可以通过为它们编写事件处理程序来检查这一点,并将日志放在这些事件处理程序中。

    有关这些属性的更多信息,请查看 android 开发者网站中的this document

    【讨论】:

    • 由于Leo没有为TextView定义OnClickListener,点击事件将由ListView'sOnItemClickListener处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    相关资源
    最近更新 更多