当客户端通过HTTP协议请求一个JSP页面时,JSP容器就会将请求信息包装到request对象中,即创建request对象;当JSP容器完成该请求后,request对象就会被撤销。客户端发生的请求信息包括请求的头信息(Header)、系统信息(比如编码方式)、请求的方式(比如GET或POST)、请求的参数名称、参数值、获取cookie、访问请求行元素和访问安全信息等。这时,可以采用request相关方法获取这些信息。
在Web动态网站技术中,其中重要的一个环节就是获取从客户端发送的请求信息,如提交的表单登录信息、客户查询信息等,并依据提交信息做进一步操作。在JSP程序中,完成从客户端获取数据的方法可以是getParameter()、getParameterName()和getParameterValues(),其中比较常用的为getParameter(),该方法的语法格式为:
public abstract String getParameter(String name)
也可以通过getParameterNames()方法得到所有的参数名称,其语法格式如下所示:
Enumeration params = request.getParameterNames()
通常情况下,当一个浏览器向Web站点提出页面请求时,首先要向服务器发送连接请求,请求的内容包括服务器地址、所请求页面的路径等。接着服务器会将请求的路径和页面的路径组合成确定所请求的页面,最后将返回到客户端。客户端向服务器发送数据时,通常采用GET方法或POST方法。
GET方法 GET方法只适合于传递数据比较少的情况。它传递数据时有两种形式,一种是在所请求页面的URL后添加数据,这样被传递的数据与页面URL之间通过问号隔开。当有多个值要传递进,多个值之间使用符号“&”分隔开。
POST方法 POST方法只能由Web页面的HTML表单来实现,即设置form中method属性值为POST。
这里要使用到LayoutAnimationController。这个类可以用在一个布局文件中的layout内,对该layout内部的控件进行控制,也可以用在Java代码中,实现同样的效果。
效果图:三个item逐个显现。
[img]
[/img]
工程结构图:
[img]
[/img]
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@id/android:list" android:layoutAnimation="@anim/list_controller" /> </LinearLayout>
user.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:padding="10dp" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/name" android:layout_width="180dp" android:layout_height="30dp" android:layout_marginLeft="20dp" android:textColor="#fff" android:textSize="10pt" android:singleLine="true" /> <TextView android:id="@+id/age" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginRight="10dp" android:textColor="#fff" android:gravity="right" android:textSize="10pt" /> </LinearLayout>
/res/anim/alpha.xml
<?xml version="1.0" encoding="UTF-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" ></alpha> </set>
/res/anim/list_controller.xml
<?xml version="1.0" encoding="UTF-8"?> <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:delay="0.5" android:animationOrder="normal" android:animation="@anim/alpha" />
AnimationDemo3Activity
package cxt.demo; import java.util.ArrayList; import java.util.HashMap; import android.app.ListActivity; import android.os.Bundle; import android.widget.SimpleAdapter; public class AnimationDemo3Activity extends ListActivity { private ArrayList<HashMap<String,Object>> list = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); list = new ArrayList<HashMap<String,Object>>(); HashMap<String,Object> m1 = new HashMap<String, Object>(); HashMap<String,Object> m2 = new HashMap<String, Object>(); HashMap<String,Object> m3 = new HashMap<String, Object>(); m1.put("image", R.drawable.z11); m1.put("name", "Jack"); m1.put("age","63"); m2.put("image", R.drawable.z22); m2.put("name", "Bob"); m2.put("age","15"); m3.put("image", R.drawable.z33); m3.put("name", "Theron"); m3.put("age","25"); list.add(m1); list.add(m2); list.add(m3); SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.user, new String[]{"image","name","age"}, new int[]{R.id.image,R.id.name,R.id.age}); setListAdapter(adapter); } }
本文转自:http://theron.blog.51cto.com/2383825/656690
只可用做学习。
转自:http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html
有时候,列表不光会用来做显示用,我们同样可以在在上面添加按钮。添加按钮首先要写一个有按钮的xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上。但是事实并非这样,因为按钮是无法映射的,即使你成功的用布局文件显示出了按钮也无法添加按钮的响应,这时就要研究一下ListView是如何现实的了,而且必须要重写一个类继承BaseAdapter。下面的示例将显示一个按钮和一个图片,两行字如果单击按钮将删除此按钮的所在行。并告诉你ListView究竟是如何工作的。
效果如下:
实现如下:
列表项的布局文件vlist2.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFFFF" android:textSize="22px" /> <TextView android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFFFF" android:textSize="13px" /> </LinearLayout> <Button android:id="@+id/view_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/s_view_btn" android:layout_gravity="bottom|right" /> </LinearLayout>
程序代码:
/** * @author allin * */ public class MyListView4 extends ListActivity { private List<Map<String, Object>> mData; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mData = getData(); MyAdapter adapter = new MyAdapter(this); setListAdapter(adapter); } private List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("title", "G1"); map.put("info", "google 1"); map.put("img", R.drawable.i1); list.add(map); map = new HashMap<String, Object>(); map.put("title", "G2"); map.put("info", "google 2"); map.put("img", R.drawable.i2); list.add(map); map = new HashMap<String, Object>(); map.put("title", "G3"); map.put("info", "google 3"); map.put("img", R.drawable.i3); list.add(map); return list; } // ListView 中某项被选中后的逻辑 @Override protected void onListItemClick(ListView l, View v, int position, long id) { Log.v("MyListView4-click", (String)mData.get(position).get("title")); } /** * listview中点击按键弹出对话框 */ public void showInfo(){ new AlertDialog.Builder(this) .setTitle("我的listview") .setMessage("介绍...") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); } public final class ViewHolder{ public ImageView img; public TextView title; public TextView info; public Button viewBtn; } public class MyAdapter extends BaseAdapter{ private LayoutInflater mInflater; public MyAdapter(Context context){ this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return mData.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder=new ViewHolder(); convertView = mInflater.inflate(R.layout.vlist2, null); holder.img = (ImageView)convertView.findViewById(R.id.img); holder.title = (TextView)convertView.findViewById(R.id.title); holder.info = (TextView)convertView.findViewById(R.id.info); holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } holder.img.setBackgroundResource((Integer)mData.get(position).get("img")); holder.title.setText((String)mData.get(position).get("title")); holder.info.setText((String)mData.get(position).get("info")); holder.viewBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showInfo(); } }); return convertView; } } }