动态改变ListView布局
在getView()时,通过判断选择加载不同的布局。
点击某个item的时候,变为foucus状态,其他的items还原。
下面用两个方法给item设置两个不同的布局。
//foucus状态,显示一个ImageViewprivate View addFocusView(int i) {ImageView iv = new ImageView(mContext);iv.setImageResource(R.drawable.ic_launcher);return iv;}
//normal状态显示一个ImageView和一个TextViewprivate View addNormalView(int i) {LinearLayout layout = new LinearLayout(mContext);layout.setOrientation(LinearLayout.HORIZONTAL);ImageView iv = new ImageView(mContext);iv.setImageResource(R.drawable.ic);layout.addView(iv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));TextView tv = new TextView(mContext);tv.setText(mData.get(i));layout.addView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));layout.setGravity(Gravity.CENTER);return layout;}
FocusListViewAdapter.java
package sunny.example.ahfourlistviewfocus;import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;import java.util.List;public class FocusListViewAdapter extends BaseAdapter {private List<String> mData;private Context mContext;private int mCurrentItem = 0;public FocusListViewAdapter(Context context, List<String> data) {this.mContext = context;this.mData = data;}public int getCount() {return mData.size();}public Object getItem(int position) {return mData.get(position);}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {LinearLayout layout = new LinearLayout(mContext);layout.setOrientation(LinearLayout.VERTICAL);if (mCurrentItem == position) {layout.addView(addFocusView(position));} else {layout.addView(addNormalView(position));}return layout;}public void setCurrentItem(int currentItem) {this.mCurrentItem = currentItem;}
//foucus状态,显示一个ImageViewprivate View addFocusView(int i) {ImageView iv = new ImageView(mContext);iv.setImageResource(R.drawable.ic_launcher);return iv;}
//normal状态显示一个ImageView和一个TextViewprivate View addNormalView(int i) {LinearLayout layout = new LinearLayout(mContext);layout.setOrientation(LinearLayout.HORIZONTAL);ImageView iv = new ImageView(mContext);iv.setImageResource(R.drawable.ic);layout.addView(iv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));TextView tv = new TextView(mContext);tv.setText(mData.get(i));layout.addView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));layout.setGravity(Gravity.CENTER);return layout;}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ListViewandroid:id="@+id/focus_listView"android:layout_width="match_parent"android:layout_height="wrap_content" />
</LinearLayout>
MainActivity.java
package sunny.example.ahfourlistviewfocus;import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;import java.util.ArrayList;
import java.util.List;public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView listView = (ListView) findViewById(R.id.focus_listView);List<String> data = new ArrayList<String>();data.add("I am item 1");data.add("I am item 2");data.add("I am item 3");data.add("I am item 4");data.add("I am item 5");final FocusListViewAdapter adapter = new FocusListViewAdapter(this, data);/* public void setAdapter (ListAdapter adapter) Sets the data behind this ListView.*/listView.setAdapter(adapter);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {adapter.setCurrentItem(position);////*void android.widget.BaseAdapter.notifyDataSetChanged()
Notifies the attached observers that the underlying data has been changed and any View reflecting the data set should refresh itself.
*/ //刷新布局adapter.notifyDataSetChanged();}});}}
foucus item3的情况
动态改变ListView布局相关推荐
- android 动态改变listview的内容
本文模拟:点击一个按钮,为已有的listview添加一行数据 <?xml version="1.0" encoding="utf-8"?> < ...
- 【Android多屏适配】动态改变Listview item高度
在ListView的Adapter中去直接获取传入View的LayoutParams是会报空指针异常的,唯一的方法是在xml中嵌套布局一层LinearLayout <?xml version=& ...
- android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...
本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,noti ...
- android动态改变布局,Android 动态添加布局的两种方式
前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的两种方式,分别是 动态添加xml ...
- vue中设置html的fontsize,vue中rem布局使用js动态改变fontsize
rem布局原理:使用js动态改变html的字体大小+rem的特性,来保证最初的设计图中每个元素的尺寸比例不变,以适用于不同尺寸的设备能够正常显示. (function (doc, win) { var ...
- 动态修改ListView文字大小
动态修改ListView文字大小 写了一个MyAdapter(继承了BaseAdapter)去实现数据和UI的显示.通过滑动SeekBar来改变MyAdapter的getView方法中View的字体大 ...
- 动态改变select 宽度
有一个简单的办法:动态改变宽度 <select οnblur="this.style.width=30" οnfοcus="this.sty ...
- html卡片布局按钮,Material Design风格动态网格卡片布局UI设计
这是一款效果非常炫酷的Material Design风格动态网格卡片布局UI设计效果.在该效果中鼠标滑过卡片时会有阴影效果,当浏览器尺寸改变时,卡片大小会随着改变,整个网格布局有动态变化效果. 使用方 ...
- Android 动态计算ListView的高度
目录 一.简介 二.效果图 三.代码实现 一.简介 在Android开发的过程中有的时候我们需要手动计算ListView的高度,比如说,ScrollView中嵌套ListView的时候,我们就需要手动 ...
最新文章
- Microbiome:韦中组揭示根际原生动物群落是决定植物健康的关键因素
- 苹果史诗级硬件漏洞 iOS 可永久越狱并且无法修复
- Perl 教学 Perl5中的引用(指针)
- 设置vmware vsphere web client_Arduino+前端高级应用-通过WEB网页控制Arduino开发板上的LED灯...
- sdk数值与android版本,Android SdkVersion的区别及获取版本信息方法
- SAP Spartacus 中的 checkout(结帐) 设计
- java中multiply用法_java中BigDecimal加减乘除基本用法
- Iceberg 在基于 Flink 的流式数据入库场景中的应用
- 唯品会2017年双11大促技术保障实践,全域提供25万QPS服务能力
- java的printwriter_Java PrintWriter错误
- 专家视点:杜绝木马的干扰-防范后门的技巧(转)
- 宝塔linux面板-安装golang环境,宝塔面板Linux环境-安装Golang:Go语言环境
- 如何用ESP8266 向手机App 发送信息
- android 空调遥控,安卓版万能空调遥控器
- python判断今天周几_如何用python判断今天是星期几
- 手把手带你从0开始搭建个人网站,小白可懂的保姆级教程
- 疑难杂症篇(十六)--虚拟机出现“The system is running in low-graphics mode“问题的解决方案
- 实验三:CART分类决策树python实现(两个测试集)(一)|机器学习
- Android 腾讯手机管家 报毒 a.gray.PiggyGoldcoin.a
- Rockchip rv1126平台在gstreamer1中添加OpenCv实现视频流负片的效果
热门文章
- Linux命令中的$()和${}的区别
- 启动weblogic需要账号密码问题
- imagettftext php7,mac php7 imagettftext
- docker create_Docker动手教程2.2:容器基本操作2
- vs 2019 社区版许可证过期_Switch版《最终幻想12:黄道时代》对比PS4版 就没差
- java 预处理语句_预处理语句PreparedStatement到底咋用啊
- centos linux 内核升级,Centos系统的升级及Linux 内核升级
- PHP中文无法查询,php 中htmlentities导致中文无法查询问题
- python自动化运维快速入门pdf下载_Python自动化运维快速入门
- ubuntu的home目录下,Desktop等目录消失不见