android listview添加headview

2022-09-15 15:16:27 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

listview添加headview后的点击事件

1、头部view:设置view的点击时间,用于屏蔽listview的item的点击事件

代码语言:javascript复制
<span style="white-space:pre">		</span>View headerView = getLayoutInflater().inflate(R.layout.listhead, null);
		Button btn = (Button) headerView.findViewById(R.id.button1);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				Toast.makeText(MainActivity.this, "bn", Toast.LENGTH_SHORT)
						.show();
			}
		});

2、添加头部view:必须放在setAdapter前面不然会报错

代码语言:javascript复制
		lv.addHeaderView(headerView);

3、listview填充假数据

代码语言:javascript复制
		List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> map = new HashMap<String, String>();
		map.put("tv", "tv");
		list.add(map);
		list.add(map);
		list.add(map);
		list.add(map);
		list.add(map);
		list.add(map);
代码语言:javascript复制
<span style="white-space:pre">		</span>SimpleAdapter sa = new SimpleAdapter(this, list, R.layout.item_lv,
<span style="white-space:pre">				</span>new String[] { "tv" }, new int[] { R.id.tv });

4、设置适配器:如果listview不设置适配器,headview也不会显示的

代码语言:javascript复制
<span style="white-space:pre">		</span>lv.setAdapter(sa);

5、设置item点击事件

代码语言:javascript复制
		lv.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1,
					int position, long id) {
				
				//position 如果有headview  position =0 的第一个为headview
				Toast.makeText(MainActivity.this, "position:"   position,
						Toast.LENGTH_SHORT).show();
				
				//id:如果有headview或者footview  则这两个view的id为-1
				if (id == -1) {
					Toast.makeText(MainActivity.this, "head:"   id,
							Toast.LENGTH_SHORT).show();
				} else {
					Toast.makeText(MainActivity.this, "id:"   id,
							Toast.LENGTH_SHORT).show();
				}

			}
		});

main.java全部代码:

代码语言:javascript复制
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Button;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public class MainActivity extends Activity {	ListView lv;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		lv = (ListView) findViewById(R.id.listView1);				// 头部view:设置view的点击时间,用于屏蔽listview的item的点击事件		View headerView = getLayoutInflater().inflate(R.layout.listhead, null);		Button btn = (Button) headerView.findViewById(R.id.button1);		btn.setOnClickListener(new OnClickListener() {			@Override			public void onClick(View arg0) {				Toast.makeText(MainActivity.this, "bn", Toast.LENGTH_SHORT)						.show();			}		});				// 添加头部view:必须放在adapter前面不然会报错		lv.addHeaderView(headerView);				// 假数据		List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();		HashMap<String, String> map = new HashMap<String, String>();		map.put("tv", "tv");		list.add(map);		list.add(map);		list.add(map);		list.add(map);		list.add(map);		list.add(map);		SimpleAdapter sa = new SimpleAdapter(this, list, R.layout.item_lv,				new String[] { "tv" }, new int[] { R.id.tv });				// 设置适配器:如果listview不设置适配器,headview也不会显示的		lv.setAdapter(sa);				// 设置item点击事件:		lv.setOnItemClickListener(new OnItemClickListener() {			@Override			public void onItemClick(AdapterView<?> arg0, View arg1,					int position, long id) {								//position 如果有headview  position =0 的第一个为headview				Toast.makeText(MainActivity.this, "position:"   position,						Toast.LENGTH_SHORT).show();								//id:如果有headview或者footview  则这两个view的id为-1				if (id == -1) {					Toast.makeText(MainActivity.this, "head:"   id,							Toast.LENGTH_SHORT).show();				} else {					Toast.makeText(MainActivity.this, "id:"   id,							Toast.LENGTH_SHORT).show();				}			}		});	}	@Override	public boolean onCreateOptionsMenu(Menu menu) {		// Inflate the menu; this adds items to the action bar if it is present.		getMenuInflater().inflate(R.menu.main, menu);		return true;	}}

推荐文章:点击打开链接

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163272.html原文链接:https://javaforall.cn

0 人点赞