adpter用的是继承的baseadapter,给整个listview上的Item设置点击事件就用listview.setOnItemClickListener(listener)就可以,下面介绍如果给Item里面某一控件设置点击事件。方法是重写 Adapter。
ListView工作原理(针对下面代码):
1. 给ListView设置数据适配器,此chǔ程序是自己重写的Adapter,创建Adapter 的时候主要做下面的工作:
(1)把ListView需要显示的数据传给Adapter
(2)把ListView显示Item的界面传给Adapter
(3)把上下文对象传给Adapter,主要用来得到LayoutInflater对象来得到Item界面
2. 给ListView设置当点击Item对象的时候执行的 *** 作,此chǔ要实现给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>
public class MyAdapter extends BaseAdapter {private List<User>users
private int resource
private LayoutInflater inflater
private Context context
public MyAdapter(List<User>users, Context context, int resource,
String user_qq) {
this.users = users
this.resource = resource
this.context = context
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
}
@Override
public int getCount() {
return users.size()
}
@Override
public Object getItem(int position) {
return users.get(position)
}
@Override
public long getItemId(int position) {
return position
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(resource, null)
}
User user = users.get(position)
//获取控件
Button button = (Button) convertView.findViewById(R.id.remark)
//为控件设置数据
button.setText("评论")
//设置监听事件
button.setOnclickListener(new View(
............
))
return convertView
}
}
呵呵好了,言归正传。ListBox的双击事件,在前台页面上ListBox是没有双击事件的所以要通过脚本来添加,具体如下:在前台页面上放置一个<asp:ListBox runat=”server”id=”lsb_**”></asp:ListBox>控件,简单测试时先往此控件中手动添加几个值,并在前台放一个隐藏域来存放你是否双击的值如:<input type=”hidden” id=”hdvalue” name=”hdvalue” value="false" runat=”server”/>,用true和false来表示。 在前台上添加<script type=”text/vbscript”>option explicit sub lsb_**_ondblclick() Form1.hdvalue.value="true" Form1.submit() end sub</script>在后台就这么写:在PageLoad事件中写如下:If(IsPostBack){ If(hdvalue.Value == “true”) Lsb_**_DbClick()}然后在后台中添加Lsb_**_DbClick()这个方法。在前台上方一个Label用来显示你双击的项是否是你选择的。如: Protected void Lsb_**_DbClick(){ This.Label1.Text = “双击了“+Lsb_**.SelectedItem.ToString()}这样就可以为ListBox添加双击事件了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)