Java ListView行不可单击(添加两个按钮后)
奇怪的是,在我添加了两个按钮:提交和显示结果之后,我的listView的onClick不再工作。 下面是列表视图xmlJava ListView行不可单击(添加两个按钮后),java,android,android-listview,Java,Android,Android Listview,奇怪的是,在我添加了两个按钮:提交和显示结果之后,我的listView的onClick不再工作。 下面是列表视图xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".CulturalActivity"
android:background="#EFEFEF"
android:id="@+id/AdLayout"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="3dp"
>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:divider="@android:color/transparent"
android:descendantFocusability="blocksDescendants"
android:scrollbars="none"
android:dividerHeight="10dp"
android:listSelector="@drawable/list_selector" />
</RelativeLayout>
以下是每个列表行的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="315dp"
android:clickable="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="7dp"
android:background="@drawable/bg_card"
android:orientation="horizontal"
android:padding="5dip" >
<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginLeft="-60dp"
android:background="#2093CD"
android:gravity="center_horizontal" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="52dp"
android:text="Audit"
android:textColor="@android:color/white"
android:textSize="20sp"
android:textStyle="bold" />
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/relativeLayout2" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Farm/Grp"
android:textColor="#000000"
android:typeface="sans"
android:textSize="17sp"
android:textStyle="bold"
android:layout_alignTop="@+id/tile"
android:layout_toRightOf="@+id/textView4" />
<!--thumbnail-->
<LinearLayout
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/thumbnail_image"
android:layout_marginTop="35dp"
android:gravity="center"
android:id="@+id/tile">
<ImageView
android:id="@+id/thumbImage"
android:layout_width="50dp"
android:clickable="false"
android:layout_height="50dp"
android:src="@drawable/opened" />
</LinearLayout>
<TextView
android:id="@+id/crophead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Crop"
android:textColor="#000000"
android:typeface="sans"
android:textSize="17sp"
android:textStyle="bold"
android:layout_alignBottom="@+id/tile"
android:layout_alignLeft="@+id/title" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Certification"
android:textColor="#000000"
android:typeface="sans"
android:textSize="17sp"
android:textStyle="bold"
android:layout_marginTop="10dp"
android:layout_below="@+id/textView4"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/certification"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textView2"
android:layout_marginLeft="22dp"
android:layout_toRightOf="@+id/title"
android:text="Test"
android:textColor="#343434"
android:textSize="17sp" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Audit Type"
android:textColor="#000000"
android:typeface="sans"
android:textSize="17sp"
android:textStyle="bold"
android:layout_below="@+id/tile"
android:layout_alignLeft="@+id/textView2"
android:layout_marginTop="20dp" />
<TextView
android:id="@+id/audittype"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/textView2"
android:layout_alignLeft="@+id/certification"
android:maxLines="2"
android:text="ES"
android:textColor="#343434"
android:textSize="17sp" />
<View
android:layout_width="fill_parent"
android:layout_height="3px"
android:layout_marginTop="200dp"
android:background="#21265b"
android:id="@+id/view" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Date"
android:textColor="#000000"
android:typeface="sans"
android:textSize="17sp"
android:textStyle="bold"
android:layout_below="@+id/view"
android:layout_alignLeft="@+id/view"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:layout_alignParentBottom="false" />
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="End Date"
android:textColor="#000000"
android:typeface="sans"
android:textSize="17sp"
android:textStyle="bold"
android:layout_marginRight="15dp"
android:layout_alignTop="@+id/textView6"
android:layout_alignRight="@+id/startdate" />
<TextView
android:id="@+id/startdate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#8B1A1A"
android:text="30/05/1992"
android:textSize="17sp"
android:layout_alignTop="@+id/enddate"
android:layout_toRightOf="@+id/relativeLayout2"
android:layout_marginLeft="6dp"
android:layout_alignParentBottom="false" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#8B1A1A"
android:text="2/13/14"
android:textSize="17sp"
android:id="@+id/enddate"
android:layout_below="@+id/textView7"
android:layout_alignRight="@+id/textView7" />
<TextView
android:id="@+id/farm"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/audittype"
android:maxLines="3"
android:layout_alignTop="@+id/title"
android:text="Tea Estate Nagarcoil Tamil Nadu, India "
android:textColor="#343434"
android:textSize="17sp" />
<TextView
android:id="@+id/crop"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/farm"
android:layout_alignTop="@+id/crophead"
android:maxLines="2"
android:text="Wheat without its chaff and barn but not brown"
android:textColor="#343434"
android:textSize="17sp" />
<Button
android:id="@+id/upsync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@drawable/blue_thumb"
android:layout_below="@+id/enddate"
android:focusable="false"
android:focusableInTouchMode="false"
android:text="Show Results"
android:textColor="@android:color/white" />
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/upsync"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_below="@+id/enddate"
android:background="@drawable/blue_thumb"
android:text="Submit"
android:textColor="@android:color/white" />
</RelativeLayout>
以下是列表视图的单击片段:
listview.setOnItemClickListener( new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long id) {
long audit_id;
try{
audit_id = (new CustomListAdapter(HomeList.this, c).getAuditID(position));
changeTileStatus(audit_id,"opened");
System.out.println("listClicked");
sendAuditAndIntent(audit_id);
}catch(Exception e)
{
System.out.println("ERROR @ HOMELIST list onClick: "+e);
}
}
private void sendAuditAndIntent(long audit_id) { //sends audit id and api key
Intent intent = new Intent(HomeList.this,ChapterActivity.class );
Bundle extras= new Bundle();
extras.putString("audit_id",String.valueOf(audit_id));
extras.putString("api_key", api_key);
intent.putExtras(extras);
startActivity(intent);
}
private void changeTileStatus(long audit_id, String value) {
AuditTableManager tile= new AuditTableManager(HomeList.this);
tile.open();
tile.updateEntry(audit_id, value);
tile.close();
}
});
listview.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图,
内部位置,长id){
长审核id;
试一试{
audit_id=(新的CustomListAdapter(HomeList.this,c).getAudited(position));
changeTileStatus(审计id,“已打开”);
System.out.println(“listClicked”);
发送审核内容(审核id);
}捕获(例外e)
{
System.out.println(“ERROR@HOMELIST list onClick:+e”);
}
}
私有void发送审核内容(长审核\u id){//发送审核id和api密钥
意向意向=新意向(HomeList.this,ChapterActivity.class);
Bundle extras=新Bundle();
extras.putString(“audit_id”,String.valueOf(audit_id));
附加putString(“api_键”,api_键);
意图.临时演员(临时演员);
星触觉(意向);
}
私有void changeTileStatus(长审核id,字符串值){
AuditTableManager磁贴=新的AuditTableManager(HomeList.this);
tile.open();
tile.updateEntry(审核id、值);
tile.close();
}
});
如果单元格包含可单击的视图,则不会调用McClickListener。这是Android的一项功能。您可以通过OnClickListener处理单击,然后将其设置为两个按钮(而不是listView本身)
在适配器中:
public View onCreateView(..., final int position){
...
convertView.findViewById(R.id.button1).setOnClickListener(new OnClickListener(){
public void onClick(View view){
itemClickedAction1(position);
}
});
convertView.findViewById(R.id.button2).setOnClickListener(new OnClickListener(){
public void onClick(View view){
itemClickedAction2(position);
}
});
...
}
在自定义行文本视图中尝试android:Focusable=“false”和android:clickable=“false”,也可以尝试此视图。getFocus();对于行。我尝试了xml中的行,但没有成功。但是我还需要单击位置,如果使用onClickListener(),我将如何获得该位置?如果我对listview使用onClickListener,Java将返回一个错误。Logcat要求我改为使用onItemClick。请参阅我的更新注释,我添加了解释将位置传递给适配器内部OnClick侦听器的代码。