listView的setOnItemClickListener

时间:2015-11-18 10:34:42

标签: android listview

我正在尝试点击列表视图上的按钮来更新该行,我首先尝试点击列表视图中的项目以显示吐司。

我做了setOnItemClickListener

ListView
public class Medlistview extends Activity{
DB db = new DB(this);
ImageButton updateimagebutton = (ImageButton)findViewById(R.id.editbuttonimage);

@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.medlistview);
    populatemedlistview();
}



public void populatemedlistview(){
    Cursor cursor = db.getMEDINF();

    String[] medinfo = new String[]{
            DB.col1,DB.col2,DB.col3,DB.col4,DB.rowID
    };
    int[] mappingmed = new int[]{
            R.id.MEDid,R.id.MedName,R.id.Medpurpose,R.id.medNotaplet,R.id.ROWID
    };

    SimpleCursorAdapter medcursoradapter = new SimpleCursorAdapter(this,R.layout.medlistviewxml,cursor,medinfo,mappingmed);
    ListView medlistview = (ListView)findViewById(R.id.listViewmed);
    medlistview.setAdapter(medcursoradapter);
    medlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(Medlistview.this,"clicked",Toast.LENGTH_LONG).show();
        }
    });
}








}

我确保我的列表视图可以点击并且可以关注,但仍无法正常工作

我每次运行应用程序时,我已经在ListVew布局上定义了布局项上的图像按钮还有一件事,是崩溃并在log-cat中显示空引用消息我还需要在ListView布局上定义按钮

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference

我的xml布局文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">

<ListView
  android:layout_width="match_parent"
    android:layout_height="282dp"
    android:id="@+id/listViewmed"
    android:layout_weight="0.40"
    android:background="#c7c0c0"
    android:clickable="true"
    android:focusable="true" />
  </LinearLayout>

这是我的列表项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">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Medium Text"
    android:id="@+id/MEDid"
    android:layout_marginTop="40dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="10dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Medium Text"
    android:id="@+id/MedName"
    android:layout_below="@+id/MEDid"
    android:layout_alignParentLeft="true"
    android:layout_marginBottom="10dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Medium Text"
    android:id="@+id/Medpurpose"
    android:layout_below="@+id/MedName"
    android:layout_alignParentLeft="true"
    android:layout_marginBottom="10dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Medium Text"
    android:id="@+id/medNotaplet"
    android:layout_below="@+id/Medpurpose"
    android:layout_alignParentLeft="true"
    android:layout_marginBottom="10dp" />

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/editbuttonimage"
    android:layout_above="@+id/Medpurpose"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:src="@drawable/editicon" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="Small Text"
    android:id="@+id/ROWID"
    android:layout_alignBottom="@+id/medNotaplet"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />
</RelativeLayout>

先谢谢。

4 个答案:

答案 0 :(得分:0)

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

用于自定义布局文件中的所有UI控件。

答案 1 :(得分:0)

在适配器中的View.OnClickListener()方法中实施ImageButton,而不是Medlistview活动。并使用getView()callback来处理您活动中的点击操作。

eventBus

答案 2 :(得分:0)

使用android:descendantFocusability =&#34; blocksDescendants&#34;在listview中, 看看这个回答:can't click on listview row with imagebutton

答案 3 :(得分:0)

设置项目的父级布局

android:descendantFocusability="blocksDescendants"

并设置

android:clickable="false"
    android:focusable="false">

在你的所有小部件上。