给Listview里面Item里的每一个控件怎么设定点击事件

 我来答
就烦条0o
2016-09-11 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46489
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
给Listview里面Item里的每一个控件怎么设定点击事件

adpter用的是继承的baseadapter,给整个listview
上的
Item
设置点击事件就用listview.setOnItemClickListener(listener)就可以,
下面介绍
如果

I
tem里面某一
控件设置点击事件。方法是重写
Adapter。

ListView工作原理(针对下面代码):

1.
给ListView设置数据适配器,此处程序是自己重写的Adapter,创建Adapter 的时候主要做下面的工作:

(1)把ListView需要显示的数据传给Adapter

(2)把ListView显示Item的界面传给Adapter

(3)把上下文对象传给Adapter,主要用来得到LayoutInflater对象来得到Item界面

2. 给ListView设置当点击Item对象的时候执行的操作,此处要实现给Item中的各项也就是该程序的三个TextView设置监听器,也就是调用Adapter中的getView函数。

3. getView函数实现的操作是:第一要将Item要显示的数据显示,然后设置监听器,为监听器设置操作。

代码如下:

ListView中Item的布局文件

activity_my_goods_listview.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal" >

<TextView

android:id = "@+id/goodBarcode"

android:layout_width="150dip"

android:layout_height="wrap_content"

android:textColor="#000"

android:textSize="16sp"

android:paddingTop="10dip"

android:clickable="true"//设置可点击

/>

<TextView

android:id="@+id/goodName"

android:layout_width="150dip"

android:layout_height="wrap_content"

android:textColor="#000"

android:textSize="16sp"

android:paddingTop="10dip"

android:clickable="true"

/>

<TextView

android:id="@+id/goodProvider"

android:layout_width="150dip"

android:layout_height="wrap_content"

android:textColor="#000"

android:textSize="16sp"

android:paddingTop="10dip"

android:clickable="true"

/>

</LinearLayout>

ListView控件所在的布局文件

activity_my_goods.xml

<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"

android:background="#ffffffff"

android:gravity="center"

android:orientation="vertical">

<LinearLayout //标题

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:paddingLeft="15px"

android:layout_marginLeft="5dip"

android:layout_marginTop="93dip">

<TextView

android:layout_width="150dip"

android:layout_height="wrap_content"

android:textColor="#000"

android:textSize="16sp"

android:text="商品条码"

android:paddingTop="10dip"

/>

<TextView

android:layout_width="150dip"

android:layout_height="wrap_content"

android:textColor="#000"

android:textSize="16sp"

android:text="商品名称"

android:paddingTop="10dip"

/>

<TextView

android:layout_width="150dip"

android:layout_height="wrap_content"

android:textColor="#000"

android:textSize="16sp"

android:text="供应商"

android:paddingTop="10dip"

/>

</LinearLayout>

<ScrollView

android:id="@+id/feedbacklayout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_marginTop="103dip"

android:paddingTop="20.0dip" >

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:paddingLeft="20px">

<ListView

android:id="@+id/goodsinfoListView"

android:layout_width="wrap_content"

android:layout_height="354dp"

android:layout_marginBottom="5.0dip"

android:layout_marginRight="5.0dip"

android:textColor="#000"

android:textSize="16.0dip">

</ListView>

</ScrollView>

</RelativeLayout>

重写Adapter类

MyGoodsAdapter.java

import java.util.List;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

import android.widget.Toast;

/*

* 我的商品ListView的adapter。

* */

public class MyGoodsAdapter extends BaseAdapter {

private List<Good> goods;//ListView显示的数据

private int resource;//显示列表项的Layout

private LayoutInflater inflater;//界面生成器

private Context context;

public MyGoodsAdapter(List<Good> goods,int resource,Context context){

this.goods = goods;

this.resource = resource;

this.context = context;

inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

@Override

public int getCount() {

return goods.size();

}

@Override

public Object getItem(int arg0) {

return goods.get(arg0);

}

@Override

public long getItemId(int arg0) {

return arg0;

}

@Override

public View getView(int arg0, View arg1, ViewGroup arg2) {

if(arg1 == null){

arg1 = inflater.inflate(resource, null);

}

final Good good = goods.get(arg0);

TextView goodBarcode =(TextView) arg1.findViewById(R.id.goodBarcode);

//设置ListView中的Item中的TextView

goodBarcode.setText(good.getGoodBarcode());

//为TextView设置监听器

goodBarcode.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View arg0) {

Toast.makeText(context, good.getGoodBarcode(), Toast.LENGTH_LONG).show();

}

});

TextView goodName =(TextView) arg1.findViewById(R.id.goodName);

goodName.setText(good.getGoodName());

goodName.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View arg0) {

Toast.makeText(context, good.getGoodName(), Toast.LENGTH_LONG).show();

}

});

TextView goodProvider =(TextView) arg1.findViewById(R.id.goodProvider);

goodProvider.setText(good.getGoodProvider());

goodProvider.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View arg0) {

Toast.makeText(context, good.getGoodProvider(), Toast.LENGTH_LONG).show();

}

});

return arg1;

}

}
百度网友11430b2
2018-03-10 · TA获得超过859个赞
知道小有建树答主
回答量:1.2万
采纳率:75%
帮助的人:359万
展开全部
. 给ListView设置数据适配器,此处程序是自己重写的Adapter,创建Adapter 的时候主要做下面的工作:
(1)把ListView需要显示的数据传给Adapter
(2)把ListView显示Item的界面传给Adapter
(3)把上下文对象传给Adapter,主要用来得到LayoutInflater对象来得到Item界面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式