直接贴代码 我不喜欢废话!看看吧!
package com.jclt.activity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
/**
* 测试ScrollView和listview
* @author TanRuixiang
* @date 2011年8月2日, PM 03:05:08
*/
public class ScorllViewAndListViewActivity extends Activity {
private ListView listView = null;
private ListAdapter listAdapter = null;
private List<Map<String,Object>> list = null ;
private float density = 0 ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//绑定ID到控件上面
listView = (ListView)findViewById(R.id.listview);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
density = metrics.density;
initDate();
}
/**
* 拿到整个数据List的大小</br>
* 如果List不等于空 或者 List的大小大于零</br>
* 实例化一个自定义的适配器,把自定义的适配器绑定到控件ListView上面</br>
* 实例化一个自定义的监听器,把自定义的监听器绑定到控件ListView上面</br>
* 判断屏幕的密度 </br>
* 如果密度小于1.0 密度等于1.5</br>
* 就给ListView手动设置宽度和高度</br>
*/
private void initDate(){
list = getData();
if(list != null && list.size() > 0){
//SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.list_item, new String[]{"name","age"}, new int[]{R.id.textviewName,R.id.textviewAge});
listAdapter = new ListAdapter(this);
listView.setAdapter(listAdapter);
listView.setOnItemClickListener(new OnclickListVieListener());
if(density < 1.0 || density == 1.5){
listView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, (int) (list.size() * 48 * density)));
} else{
listView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, (int) (list.size() * 47 * density)));
}
}
}
/**
* 获取到数据(此数据类型是一个List集合,List集合中是一个Map(通过键值对来获取Map中的数据))
* @return list
*/
/* 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("name", "yuanshouhui");
map.put("pass", "123456");
list.add(map);
map = new HashMap<String, Object>();
map.put("name", "tanglong");
map.put("pass", "123456");
list.add(map);
map = new HashMap<String, Object>();
map.put("name", "zhuangsan");
map.put("pass", "123456");
list.add(map);
map = new HashMap<String, Object>();
map.put("name", "xiaoyuan");
map.put("pass", "123456");
list.add(map);
map = new HashMap<String, Object>();
map.put("name", "xiaoqiang");
map.put("pass", "123456");
list.add(map);
map.put("name", "yuanshouhui");
map.put("pass", "123456");
list.add(map);
map = new HashMap<String, Object>();
map.put("name", "tanglong");
map.put("pass", "123456");
list.add(map);
map = new HashMap<String, Object>();
map.put("name", "zhuangsan");
map.put("pass", "123456");
list.add(map);
map = new HashMap<String, Object>();
map.put("name", "xiaoyuan");
map.put("pass", "123456");
list.add(map);
map = new HashMap<String, Object>();
map.put("name", "xiaoqiang");
map.put("pass", "123456");
list.add(map);
map.put("name", "yuanshouhui");
map.put("pass", "123456");
list.add(map);
map = new HashMap<String, Object>();
map.put("name", "tanglong");
map.put("pass", "123456");
list.add(map);
return list;
}*/
private List<Map<String, Object>> getData(){
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
for (int i = 0; i < 30; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "name"+i);
map.put("age", "age"+i);
list.add(map);
}
return list;
}
/**
* 设置监听器(给ListView每一个Item设置一个监听器)
* @author TanRuixiang
* @date 2011年8月2日, PM 03:05:08
*/
class OnclickListVieListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Toast.makeText(getApplicationContext(), "第"+arg2+"个触发监听器", 0).show();
}
}
/**
* 设置一个适配器(把该适配器绑定到ListView上面)
* @author TanRuixiang
* @date 2011年8月2日, PM 03:05:08
*/
class ListAdapter extends BaseAdapter{
private LayoutInflater inflater ;
public ListAdapter(Context context){
this.inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public final class Holder{
TextView gridName;
TextView gridPrice;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder ;
if(convertView == null){
holder = new Holder();
convertView = inflater.inflate(R.layout.list_item, null);
holder.gridName = (TextView)convertView.findViewById(R.id.textviewName);
holder.gridPrice = (TextView)convertView.findViewById(R.id.textviewAge);
convertView.setTag(holder);
}else{
holder =(Holder)convertView.getTag();
}
holder.gridName.setText(("姓名:")+(String)list.get(position).get("name"));
System.out.println(holder.gridName.getText());
holder.gridPrice.setText(("年龄:")+(String)list.get(position).get("age"));
return convertView;
}
}
}
<?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"
>
<TextView android:id="@+id/textviewName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView android:id="@+id/textviewAge"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<?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"
>
<ScrollView android:id="@+id/scorllview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<LinearLayout android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ListView android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:dividerHeight="1dip"
></ListView>
</LinearLayout>
</ScrollView>
</LinearLayout>
分享到:
相关推荐
按照网上说的通常是在ListView的Item布局中给Button加 android:focusable="false"在Item根布局加android:descendantFocusability="blocksDescendants" 。这样做之后item确实可以点击了,但又会出现另外一个问题 点击...
Android listview viewpager 滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 blog 地址 : http://blog.csdn.net/aaawqqq/article/details/43824631
android:scheme 通过uri跳转到APP应用指定Activity
《深入理解Android:卷2》是“深入理解Android”系列的第2本,第1本书上市后获得广大读者高度评价,在Android开发者社群内口口相传。《深入理解Android:卷2》不仅继承了第1本书的优点并改正了其在细微处存在的一些...
Android 中解决滑动的方案有2种:外部拦截法 和内部拦截法。 滑动冲突也存在2种场景: 横竖滑动冲突、同向滑动冲突。 所以我就写了4个例子来学习如何解决滑动冲突的,这四个例子分别为: 外部拦截法解决横竖冲突、...
ListView + ViewPager + Fragment + ListView 三层嵌套滑动控件的显示冲突解决方案,并且动态更新ViewPager的高度适应当前高度而不会出现大片空白
android:background="@drawable/bottom" android:layout_width="fill_parent" android:layout_height="44.0dip"> <ImageButton android:id="@+id/login_option" android:background="@drawable/option" ...
《深入理解Android:卷I》是一本以情景方式对Android的源代码进行深入分析的书。内容广泛,以对Framework层的分析为主,兼顾Native层和Application层;分析深入,每一部分源代码的分析都力求透彻;针对性强,注重实际...
Android:自定义组件绘制柱状统计图,有问题请在博文中评论。 对应博文:http://blog.csdn.net/books1958/article/details/43018107
无论是添加缺失的依赖项、解决版本冲突还是调整构建配置,该指南都提供了清晰的指导,帮助你逐步解决问题。 实用的代码示例:在一些问题的解决方案中,该指南还提供了实用的代码示例。这些示例代码将向你展示如何...
Android_ScrollView与ListView_GridView共存冲突解决方案
Android 系统的触摸事件分发总是从父布局开始分发,从最顶层的子 View 开始处理,这种特性有时候会限制了我们一些很复杂的交互设计。
《深入理解Android:Telephony原理剖析与最佳实践》迷你书.pdf
代码混淆—关于android被反编译的两种解决方案,使用方法参见我的博文:http://blog.csdn.net/online1989/article/details/7058743
AndroidView的事件分发机制和滑动冲突解决方案.docx
全网唯一有用的解决方案!彻底解决VerticalViewPager嵌套RecyclerView引起的滑动冲突!
android:两个ListView联动效果,实现京东商城app分类效果
如有疑问,欢迎和我交流。博客地址http://blog.csdn.net/footballclub/article/details/43193847,
此文档用于实现 菜单侧滑和viewpager共同存在,其中提出了解决他们之间的侧滑冲突问题,并提供两种侧滑方式。