当客户端通过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;
}
}
}