直接贴代码 我不喜欢废话!看看吧!
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>
分享到:
相关推荐
对于径向渐变,只需将`<gradient>`标签内的`type`属性改为`radial`,并添加`android:centerX`、`android:centerY`和`android:gradientRadius`属性来指定渐变中心和半径。 ### 四、综合运用 可以结合以上三种效果,...
《深入理解Android:Telephony原理剖析与最佳实践》是一本专注于Android系统中Telephony模块的专著,旨在帮助开发者和爱好者深入理解Android电话系统的内部工作原理,并提供实践中的最佳策略。Telephony是Android...
在Android开发中,`android:scheme` 是一个关键的概念,用于构建自定义URL协议,使得外部应用或系统可以通过特定的URI来启动我们的应用程序中的特定Activity。这个特性在很多场景下非常有用,比如分享链接、广告点击...
在这种场景下,"Android三层滑动控件显示冲突和ViewPager高度动态调整的解决方案Demo"是一个非常实用的示例,它解决了ListView、ViewPager以及Fragment三层嵌套时可能出现的滑动冲突问题,并且能够动态调整ViewPager...
ScrollView嵌套GridView不能滚动的问题解决方案 在 Android 开发中,我们经常会遇到 ScrollView 嵌套 GridView 的问题,导致页面不能滚动的问题。这个问题的出现是因为 ScrollView 和 GridView 都带有滚动条,当...
Android listview viewpager 滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 blog 地址 : http://blog.csdn.net/aaawqqq/article/details/43824631
解决这个问题的一种方法是将`RecyclerView`设置为`NestedScrollView`的直接子视图,而不是将其嵌套在其他布局中。 ```xml <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:...
《深入理解Android:卷2》是“深入理解Android”系列的第2本,第1本书上市后获得广大读者高度评价,在Android开发者社群内口口相传。《深入理解Android:卷2》不仅继承了第1本书的优点并改正了其在细微处存在的一些...
本文将详细探讨这个问题,并提供解决方案。 首先,我们需要了解Adapter的工作原理。Adapter是作为数据模型和视图之间的桥梁,它将数据转化为View,并将这些View添加到ListView等容器中。当用户与这些View交互(如...
本篇文章将深入探讨这个问题,并提供一种完美的解决方案。 首先,理解滑动冲突的根源。ListView自身已经实现了滑动滚动功能,而ScrollView同样如此。当两者叠加时,系统无法判断应该响应哪个组件的滑动事件,导致...
Android 中解决滑动的方案有2种:外部拦截法 和内部拦截法。 滑动冲突也存在2种场景: 横竖滑动冲突、同向滑动冲突。 所以我就写了4个例子来学习如何解决滑动冲突的,这四个例子分别为: 外部拦截法解决横竖冲突、...
对于如“回退”、“空格”等特殊键,可以在XML布局中设置`android:horizontalGap`和`android:popupKeyboard`属性来控制它们的显示和行为。 综上所述,通过Android的`KeyboardView`组件,我们可以轻松创建自定义的软...
在Android平台上实现声音流媒体RTSP(Real Time Streaming Protocol)的解决方案是一项技术密集型的任务,涉及到多媒体处理、网络通信和播放器控制等多个方面。本文将深入探讨如何在Android上搭建和实现RTSP音频流...
在Android 4.0(API级别14)及更高版本中,开发者可能会遇到一个常见问题:为菜单项设置的图标(Icon)无法正常显示。这个问题可能是由于系统更新或者API的改变导致的。本文将深入探讨这个问题,并提供通过反射技术...
在这种情况下,我们可以使用`android:textAlignment`和`android:transformPivotX`及`android:transformPivotY`属性来实现。`textAlignment`用于控制文字在视图中的对齐方式,`transformPivotX`和`transformPivotY`则...
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:background`属性设置自定义背景图,或者通过XML定义形状(如矩形、圆角矩形等)来改变Spinner的外观。 - 使用`<shape>`标签定义一个Drawable,设置颜色、边框宽度和边框颜色,以创建...
在Android开发中,创建一个直观且吸引人的仪表盘界面可以为用户提供丰富的视觉体验。本教程将探讨如何在Android应用中实现一个简洁而易操作的仪表盘。我们的目标是减轻编程负担,将更多复杂的设计工作交给美工,从而...
本主题聚焦于如何在Android应用中实现一个"最简单的gridview嵌套gridview"的场景,并解决滑动冲突问题。 首先,让我们了解一下GridView的基本概念。GridView是一种布局管理器,它将视图(如图片、文字等)以网格的...
在安卓平台上,`Switch`按钮是一种常见的UI组件,它提供了开/关两种状态之间的切换功能,通常用于用户进行二选一的操作,例如开启或关闭某项功能。在默认情况下,Android SDK提供了内置的`SwitchCompat`或`Switch`...