Android ListView项clicklistener无法正常工作?

Android ListView项clicklistener无法正常工作?,android,android-listview,onitemclicklistener,Android,Android Listview,Onitemclicklistener,我有一个listview,其中包含一个自定义适配器,该适配器有6个文本视图。 当我为它的项目click listener放置方法时,listview元素没有被单击。可能是什么问题 这是列表元素XML <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_p

我有一个listview,其中包含一个自定义适配器,该适配器有6个文本视图。 当我为它的项目click listener放置方法时,listview元素没有被单击。可能是什么问题

这是列表元素XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:orientation="vertical" >

<TextView
    android:id="@+id/textViewDealerName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/textViewDealerNumber1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/textViewDealerNumber2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/textViewDealerAddress"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/textViewDealerPin"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/textViewDealerCity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/textViewDealerState"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

这是适配器类

public class DealerListAdapter extends BaseAdapter {
Vector<String> dealerName = new Vector<String>();
Vector<String> dealerNum1 = new Vector<String>();
Vector<String> dealerNum2 = new Vector<String>();
Vector<String> dealerAdd = new Vector<String>();
Vector<String> dealerPin = new Vector<String>();
Vector<String> dealerCity = new Vector<String>();
Vector<String> dealerState = new Vector<String>();
private LayoutInflater inflater = null;
Context c;

public DealerListAdapter(Context a, Vector<String> name,
        Vector<String> num1, Vector<String> num2, Vector<String> add,
         Vector<String> pin, Vector<String> city,
        Vector<String> state) {
    this.dealerName = name;
    this.dealerNum1 = num1;
    this.dealerNum2 = num2;
    this.dealerAdd = add;
    this.dealerPin = pin;
    this.dealerCity = city;
    this.dealerState = state;
    this.c = a;
    inflater = (LayoutInflater) a
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    return dealerName.size();
}

@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;
    View row = convertView;
    if (row == null) {

        row = inflater.inflate(R.layout.dealer_list_element, null);
        holder = new ViewHolder();
        holder.dName = (TextView) row.findViewById(R.id.textViewDealerName);
        holder.dNum1 = (TextView) row
                .findViewById(R.id.textViewDealerNumber1);
        holder.dNum2 = (TextView) row
                .findViewById(R.id.textViewDealerNumber2);
        holder.dAdd = (TextView) row
                .findViewById(R.id.textViewDealerAddress);
        holder.dPin = (TextView) row.findViewById(R.id.textViewDealerPin);
        holder.dCity = (TextView) row.findViewById(R.id.textViewDealerCity);
        holder.dState = (TextView) row
                .findViewById(R.id.textViewDealerState);

        row.setTag(holder);

    } else {
        holder = (ViewHolder) row.getTag();
    }

    holder.dName.setText("Dealership Name: "
            + dealerName.elementAt(position));
    holder.dNum1.setText("Contact Number: "
            + dealerNum1.elementAt(position));

    holder.dNum2.setText("Contact Number: " + dealerNum2.elementAt(position));
    holder.dNum2.setMovementMethod(LinkMovementMethod.getInstance());
    holder.dAdd.setText("Address: " + dealerAdd.elementAt(position));
    holder.dPin.setText("Pincode: " + dealerPin.elementAt(position));
    holder.dCity.setText("City: " + dealerCity.elementAt(position));
    holder.dState.setText("State: " + dealerState.elementAt(position));

    return row;
}

public final class ViewHolder {

    TextView dName, dNum1, dNum2, dAdd, dPin, dCity, dState;
}

}
公共类DealerListAdapter扩展了BaseAdapter{
Vector DealName=新向量();
Vector dealerNum1=新向量();
Vector dealerNum2=新向量();
Vector dealerAdd=新向量();
向量dealerPin=新向量();
Vector dealerCity=新向量();
Vector dealerState=新向量();
专用充气机=空;
上下文c;
公共DealListAdapter(上下文a、向量名称、,
向量num1,向量num2,向量加法,
矢量针,矢量城,
矢量状态){
this.dealerName=名称;
this.dealerNum1=num1;
this.dealerNum2=num2;
this.dealerAdd=add;
this.dealerPin=pin;
this.dealerCity=城市;
this.dealerState=状态;
这个c=a;
充气机=(充气机)a
.getSystemService(上下文布局\充气机\服务);
}
@凌驾
public int getCount(){
return dealName.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
最终持票人;
视图行=转换视图;
if(行==null){
row=充气机。充气(R.layout.dealer\u list\u元素,空);
holder=新的ViewHolder();
holder.dName=(TextView)row.findViewById(R.id.textViewDealName);
holder.dNum1=(TextView)行
.findViewById(R.id.textViewDealerNumber 1);
holder.dNum2=(TextView)行
.findViewById(R.id.textViewDealerNumber 2);
holder.dAdd=(TextView)行
.findViewById(R.id.textViewDealerAddress);
holder.dPin=(TextView)row.findViewById(R.id.textViewDealerPin);
holder.dCity=(TextView)row.findViewById(R.id.textViewDealerCity);
holder.dState=(TextView)行
.findViewById(R.id.textViewDealerState);
row.setTag(支架);
}否则{
holder=(ViewHolder)row.getTag();
}
holder.dName.setText(“经销商名称:”
+DealName.elementAt(位置));
holder.dNum1.setText(“联系人号码:
+dealerNum1.元素(位置));
holder.dNum2.setText(“联系人号码:”+dealerNum2.elementAt(位置));
setMovementMethod(LinkMovementMethod.getInstance());
holder.dAdd.setText(“地址:+dealerAdd.elementAt(位置));
holder.dPin.setText(“Pincode:+dealerPin.elementAt(位置));
holder.dCity.setText(“城市:+dealerCity.elementAt(位置));
holder.dState.setText(“状态:“+dealerState.elementAt(位置));
返回行;
}
公共最终类视图持有者{
TextView数据名、dNum1、dNum2、dAdd、dPin、dCity、dState;
}
}
我的听众

dealerListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            TextView pin = (TextView) view
                    .findViewById(R.id.textViewDealerPin);
            Log.e("pin text ",pin.getText().toString());

        }
    });
dealListView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//TODO自动生成的方法存根
TextView引脚=(TextView)视图
.findViewById(R.id.textViewDealerPin);
Log.e(“pin text”,pin.getText().toString());
}
});
活性Lyout

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
tools:context="com.vfconect.locator.DealerListActivity" >

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginStart="10dp" >

        <ListView
            android:id="@+id/listViewDealer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>
    </RelativeLayout>
</FrameLayout>

<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="@android:color/white"
    android:choiceMode="singleChoice"
    android:divider="#D8D8D8" />

 </android.support.v4.widget.DrawerLayout>

通过在listview元素的父布局中添加这些行来解决

 android:baselineAligned="false"
android:descendantFocusability="blocksDescendants"

侦听器没有响应。请确保您使用的是
列表视图的正确
id
。您能在设置
适配器的位置显示代码吗
列表视图
?Id是正确的,因为列表视图显示了我提供的所有文本
Debug
您的
BaseAdapter
。检查您的
公共对象getItem()
函数。看起来你没有返回任何
对象。检查一下,也许你会想出一个解决方案