Android ListView项clicklistener无法正常工作?
我有一个listview,其中包含一个自定义适配器,该适配器有6个文本视图。 当我为它的项目click listener放置方法时,listview元素没有被单击。可能是什么问题 这是列表元素XMLAndroid 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
<?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()
函数。看起来你没有返回任何对象。检查一下,也许你会想出一个解决方案