- 浏览: 47793 次
- 性别:
- 来自: 上海
文章分类
最新评论
package com.example.scroll;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.example.scroll.GridAdapter.ViewHolder;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
public class MainActivity extends Activity {
ScrollView scroll;
String[] texts = new String[] { "无线", "通话设置", "声音", "显示", "位置", "应用", "账户",
"隐私权", "存储", "语言", "游戏", "娱乐", "电影", "音乐", "辅助功能", "日期" };
ImageView image;
TestListView list;
TestListView list2;
ImageView image2;
LinearLayout.LayoutParams lp;
private Button btnClick;
private List<HashMap<String, Object>> listValue = new ArrayList<HashMap<String, Object>>();
private int count = 0;
private GridAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
void init() {
list = (TestListView) findViewById(R.id.list);
list2 = (TestListView) findViewById(R.id.list2);
image = (ImageView) findViewById(R.id.image);
image2 = (ImageView) findViewById(R.id.image2);
btnClick = (Button) findViewById(R.id.btn_add);
btnClick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("cai_liao", "材料"+count);
map.put("shu_liang", "数量"+count );
count++;
listValue.add(map);
adapter.notifyDataSetChanged();
}
});
adapter = new GridAdapter(this, listValue);
list.setAdapter(adapter);
list2.setAdapter(new SencondAdapter(this, texts));
scroll = (ScrollView) findViewById(R.id.scroll);
scroll.requestChildFocus(image, null);
}
public class GridAdapter extends BaseAdapter {
Activity context;
List<HashMap<String, Object>> mListValue;
public GridAdapter(Activity context, List<HashMap<String, Object>> listValue) {
this.context = context;
this.mListValue = listValue;
}
@Override
public int getCount() {
return mListValue.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = context.getLayoutInflater().inflate(
R.layout.item, null);
holder = new ViewHolder();
holder.btnDel = (Button) convertView
.findViewById(R.id.btn_del);
holder.tvCaiLiao = (TextView) convertView
.findViewById(R.id.tv_cai_liao);
holder.tvShuLiang = (TextView) convertView
.findViewById(R.id.tv_shu_liang);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
HashMap<String, Object> map = new HashMap<String, Object>();
map = mListValue.get(position);
String caiLiao = (String) map.get("cai_liao");
String shuLiang = (String) map.get("shu_liang");
holder.tvCaiLiao.setText(caiLiao + "步骤" + position);
holder.tvShuLiang.setText(shuLiang);
holder.btnDel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mListValue.remove(position);
adapter.notifyDataSetChanged();
}
});
return convertView;
}
class ViewHolder {
Button btnDel;
TextView tvCaiLiao, tvShuLiang;
}
}
}
package com.example.scroll;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class SencondAdapter extends BaseAdapter {
Activity context;
String[] mTexts;
public SencondAdapter(Activity context, String[] texts) {
this.context = context;
this.mTexts = texts;
}
@Override
public int getCount() {
return mTexts.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = context.getLayoutInflater().inflate(R.layout.sencond_item,
null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.grid_text);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(mTexts[position]);
return convertView;
}
class ViewHolder {
TextView text;
}
}
package com.example.scroll;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
public class TestListView extends ListView {
public TestListView(Context context) {
super(context);
}
public TestListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TestListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdgeLength="0dp"
android:scrollbars="none" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:padding="2dp"
android:scaleType="centerCrop"
android:visibility="gone"
android:src="@drawable/ic_launcher" />
<com.example.scroll.TestListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdgeLength="0dp"
android:scrollbars="none" />
<Button
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="添加"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<ImageView
android:id="@+id/image2"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:padding="2dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_launcher" />
<com.example.scroll.TestListView
android:id="@+id/list2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdgeLength="0dp"
android:scrollbars="none" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/btn_del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
/>
<TextView
android:id="@+id/tv_shu_liang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" />
<TextView
android:id="@+id/tv_cai_liao"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/tv_shu_liang"
android:layout_toRightOf="@id/btn_del" />
</RelativeLayout>
sencond_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/grid_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
效果图:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.example.scroll.GridAdapter.ViewHolder;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
public class MainActivity extends Activity {
ScrollView scroll;
String[] texts = new String[] { "无线", "通话设置", "声音", "显示", "位置", "应用", "账户",
"隐私权", "存储", "语言", "游戏", "娱乐", "电影", "音乐", "辅助功能", "日期" };
ImageView image;
TestListView list;
TestListView list2;
ImageView image2;
LinearLayout.LayoutParams lp;
private Button btnClick;
private List<HashMap<String, Object>> listValue = new ArrayList<HashMap<String, Object>>();
private int count = 0;
private GridAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
void init() {
list = (TestListView) findViewById(R.id.list);
list2 = (TestListView) findViewById(R.id.list2);
image = (ImageView) findViewById(R.id.image);
image2 = (ImageView) findViewById(R.id.image2);
btnClick = (Button) findViewById(R.id.btn_add);
btnClick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("cai_liao", "材料"+count);
map.put("shu_liang", "数量"+count );
count++;
listValue.add(map);
adapter.notifyDataSetChanged();
}
});
adapter = new GridAdapter(this, listValue);
list.setAdapter(adapter);
list2.setAdapter(new SencondAdapter(this, texts));
scroll = (ScrollView) findViewById(R.id.scroll);
scroll.requestChildFocus(image, null);
}
public class GridAdapter extends BaseAdapter {
Activity context;
List<HashMap<String, Object>> mListValue;
public GridAdapter(Activity context, List<HashMap<String, Object>> listValue) {
this.context = context;
this.mListValue = listValue;
}
@Override
public int getCount() {
return mListValue.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = context.getLayoutInflater().inflate(
R.layout.item, null);
holder = new ViewHolder();
holder.btnDel = (Button) convertView
.findViewById(R.id.btn_del);
holder.tvCaiLiao = (TextView) convertView
.findViewById(R.id.tv_cai_liao);
holder.tvShuLiang = (TextView) convertView
.findViewById(R.id.tv_shu_liang);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
HashMap<String, Object> map = new HashMap<String, Object>();
map = mListValue.get(position);
String caiLiao = (String) map.get("cai_liao");
String shuLiang = (String) map.get("shu_liang");
holder.tvCaiLiao.setText(caiLiao + "步骤" + position);
holder.tvShuLiang.setText(shuLiang);
holder.btnDel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mListValue.remove(position);
adapter.notifyDataSetChanged();
}
});
return convertView;
}
class ViewHolder {
Button btnDel;
TextView tvCaiLiao, tvShuLiang;
}
}
}
package com.example.scroll;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class SencondAdapter extends BaseAdapter {
Activity context;
String[] mTexts;
public SencondAdapter(Activity context, String[] texts) {
this.context = context;
this.mTexts = texts;
}
@Override
public int getCount() {
return mTexts.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = context.getLayoutInflater().inflate(R.layout.sencond_item,
null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.grid_text);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(mTexts[position]);
return convertView;
}
class ViewHolder {
TextView text;
}
}
package com.example.scroll;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
public class TestListView extends ListView {
public TestListView(Context context) {
super(context);
}
public TestListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TestListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdgeLength="0dp"
android:scrollbars="none" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:padding="2dp"
android:scaleType="centerCrop"
android:visibility="gone"
android:src="@drawable/ic_launcher" />
<com.example.scroll.TestListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdgeLength="0dp"
android:scrollbars="none" />
<Button
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="添加"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<ImageView
android:id="@+id/image2"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:padding="2dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_launcher" />
<com.example.scroll.TestListView
android:id="@+id/list2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdgeLength="0dp"
android:scrollbars="none" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/btn_del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
/>
<TextView
android:id="@+id/tv_shu_liang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" />
<TextView
android:id="@+id/tv_cai_liao"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/tv_shu_liang"
android:layout_toRightOf="@id/btn_del" />
</RelativeLayout>
sencond_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/grid_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
效果图:
发表评论
-
android 判断ImageView当前显示的是哪一张图片
2015-12-29 14:40 1714判断ImageView当前显示的是哪一张图片 private ... -
Android 4.4及以上WebView问题
2015-10-27 17:41 11161. 4.4系统以上WebView页面内容重叠问题 连接 ... -
Android AlertDialog包含EditText,软键盘不能弹出的解决方法
2015-09-16 14:31 1152AlertDialog包含EditText,软键盘不能弹出的解 ... -
无法上传so文件到svn上
2015-05-25 16:48 923Window-->Team-->Ignored R ... -
Android 文件下载与解压缩
2015-03-20 18:20 396转载:http://blog.csdn.net/hopehe8 ... -
Cocos2dx与Android进行交叉编译的大概步骤
2015-02-06 17:22 1170cocos2d交叉编译配置: 1.下载cygwin 64位ex ... -
博客链接
2014-11-26 16:01 01.好文章博客:http://blog.csdn.net/xi ... -
android一些基础功能汇总
2014-11-03 10:49 7801.Android开发 给图片加边框 http://www. ... -
创建文件夹和文件
2014-10-22 15:15 751String commonPath = Environment ... -
Android 线程的使用(传递多个参数)
2014-08-06 11:08 21891.Thread new Thread(new Runnabl ... -
cocos2dx 内存管理
2014-08-04 18:18 596cocos2dx 内存管理 转载自:http://blog. ... -
android读取图片
2014-07-25 11:56 1031[size=large]一:读取res中的图片 //读取本地r ... -
Android ListView里设置默认Item的背景颜色
2014-07-23 11:51 865<?xml version="1.0" ... -
以某一点旋转(RotateAnimation)
2014-06-20 12:07 1797//自适应屏幕大小 webview.getSetting ... -
popWindow
2014-05-23 18:07 444popWindow -
自定义跑马灯
2014-05-23 16:46 617自定义跑马灯 -
WebView的使用总结
2014-05-05 12:09 685//自适应屏幕大小 webview.getSettings ... -
android 动态设置布局
2014-03-26 11:03 9871.动态设置RelativeLayout的布局 // 根据 ... -
android移动开发的很好的功能的网页
2014-03-19 18:15 705android经典DEMO http://blog.csdn ... -
android Uri获取真实路径转换成File的方法
2014-02-14 16:23 2061有的时候要将android uri如content://me ...
相关推荐
ScrollView嵌套ListView可能导致性能下降,因为两者都会处理滑动事件,增加渲染负担。 **最佳实践**: 1. 避免在ScrollView中嵌套ListView,尽可能使用RecyclerView替代ListView,因为它更高效且支持多种滚动效果。...
总的来说,Android开发中的ScrollView嵌套ListView和GridView是一项挑战,但通过巧妙地使用SwipeRefreshLayout、自定义适配器和滚动事件处理,我们可以构建出高效且功能丰富的用户界面。同时,不断优化性能和用户...
为了解决ScrollView嵌套ListView的刷新问题,有几种常见策略: 1. **使用NestedScrollView**:NestedScrollView是Android支持库提供的一种特殊类型的ScrollView,它支持嵌套滚动。这意味着它可以与另一个可以滚动的...
本文将详细介绍如何利用事件分发机制解决ScrollView嵌套ListView的问题,并通过提供的“demo”文件进行示例解析。 首先,我们需要理解滚动冲突的原因。当ScrollView作为ListView的父容器时,两个组件都具有滚动功能...
总之,处理Android ScrollView嵌套ListView的冲突需要对Android的嵌套滚动机制有深入的理解。通过使用NestedScrollView、RecyclerView以及适当的配置和事件处理,可以创建流畅、响应式的用户界面,同时避免滚动冲突...
在Android开发中,ScrollView和ListView都是非常常见的视图组件。ScrollView是一个可以包含多个子视图,并允许用户滚动查看所有内容的容器。而ListView则用于显示大量的数据集,通常以垂直列表的形式展示,支持滚动...
当ScrollView嵌套ListView时,会涉及到一些特殊的处理和优化,因为这可能会导致性能问题和用户体验上的挑战。 首先,我们要明白为什么要在ScrollView中嵌套ListView。通常,这种布局设计可能是因为我们有一个大的...
1. **使用NestedScrollView替代ScrollView**:NestedScrollView是Android Support Library中的一个组件,它内置了对嵌套滑动的支持,能很好地处理嵌套在其中的ListView或RecyclerView的滑动事件。 2. **自定义...
很多朋友因项目需求问题需要在ScrollView中嵌套使用ListView或ScrollView 但是彼此的滑动事件会发生冲突,网上大多数都是计算ListView的高度来解决这个问题,但个人亲手尝试 结果ListView的Item要是过多的话ListView...
当ScrollView中嵌套ListView或者GrideView时,listView和GrideView不能完全显示的时候
用于解决scrollview组件嵌套listview组件时候 两者之间的冲突问题
本篇文章将详细介绍四种解决ScrollView嵌套ListView问题的方法,帮助开发者更好地理解和应对这类场景。 **方法一:使用NestedScrollView替代ScrollView** NestedScrollView是Android Support Library中的一个组件...
ScrollView嵌套ListView的问题主要体现在以下几点: 1. **显示不全**:由于ScrollView会尝试将所有内容纳入其内部,而ListView的高度可能会被ScrollView压缩,导致ListView显示不完整,只有顶部部分可见。 2. **...
当ScrollView嵌套ListView时,可能会遇到显示不全的问题,即ListView的内容无法完全显示,只能看到一部分。这个问题主要是由于两个可滚动视图的冲突造成的。本文将详细探讨解决这一问题的四种方法。 ### 方法一:...
在这个"android ScrollView嵌套demo"中,我们将深入探讨如何解决这个问题,并提供一个实际的解决方案。首先,我们需要理解ScrollView的工作原理。ScrollView内部会捕获触摸事件并处理滚动,如果其子视图中还有其他可...
ScrollView嵌套ViewPager,ViewPager横向滑动时容易上下滚动处理;...ScrollView嵌套ListView,ListView滚动事件处理,可滚动; ScrollView子控件获取焦点后自动置顶问题处理。 ListView滚动到顶或到底事件监听。
解决ListView和ScrollView嵌套冲突的一种常见方法是避免直接在ScrollView内使用ListView。如果数据量不大,可以考虑改用LinearLayout或者NestedScrollView,它们可以更好地与ScrollView协同工作。但对于大数据集,...
在提供的`ListViewMeasureDemo`项目中,开发者可能已经实现了这些步骤,通过代码示例展示了如何解决ScrollView嵌套ListView时的高度计算问题。你可以通过查看该项目的代码,学习如何在实际开发中应用这种方法。 总...
但是,直接将ScrollView嵌套在ListView或者GridView中会带来问题,因为这可能导致滚动冲突。当ScrollView和ListView/GridView都尝试处理用户的滑动事件时,可能会导致滚动不顺畅或者无法正常滚动。为了解决这个问题...