给Listview里面Item里的每一个控件怎么设定点击事件
2个回答
展开全部
给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;
}
}
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;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询