当前位置: 首页 > news >正文

java 设置listview单元格颜色_动态改变Listview的item背景颜色和item中字体的颜色

首先非常感谢原文章作者。

今天项目用到Listview点击item变色。网上找了好久,都没有找到简单的方法,好像只能重写getview();

网上找到了一个比较简单的例子,但是不懂为什么,先记录下来以后慢慢学习。

package leoli.com.focuslistview;

import android.graphics.Color;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

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 java.util.ArrayList;

import java.util.List;

public class MainActivity extends AppCompatActivity {

private ListView mListView;

private List list=new ArrayList();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mListView= (ListView) this.findViewById(R.id.listview);

for (int i=0;i<10;i++){

list.add("你好"+i);

}

final MyAdapter adapter=new MyAdapter();

mListView.setAdapter(adapter);

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> adapterView, View view, int i, long l) {

adapter.setCurrentItem(i);

adapter.setClick(true);

adapter.notifyDataSetChanged();

}

});

}

class MyAdapter extends BaseAdapter{

private int mCurrentItem=0;

private boolean isClick=false;

@Override

public int getCount() {

return list.size();

}

@Override

public Object getItem(int i) {

return list.get(i);

}

@Override

public long getItemId(int i) {

return i;

}

@Override

public View getView(int i, View view, ViewGroup viewGroup) {

if (view==null){

view= LayoutInflater.from(MainActivity.this).inflate(R.layout.listview_item,null);

}

TextView textView= (TextView) view.findViewById(R.id.test);

LinearLayout parent= (LinearLayout) view.findViewById(R.id.ll_parent);

textView.setText(list.get(i));

if (mCurrentItem==i&&isClick){

parent.setBackgroundColor(Color.parseColor("#3F51B5"));

textView.setTextColor(Color.parseColor("#ff6600"));

}else{

parent.setBackgroundColor(Color.parseColor("#ffffff"));

textView.setTextColor(Color.parseColor("#000000"));

}

return view;

}

public void setCurrentItem(int currentItem){

this.mCurrentItem=currentItem;

}

public void setClick(boolean click){

this.isClick=click;

}

}

}

下面是原文章的讲解:

我们都知道,Listview每生成一个item都会执行一次getview().所以我们在Adapter中加入了两个字段,这两个字段是用来判断当前的item的position和该item有无被点击的.mCurrentItem的初始值为0,所以在不断执行getview()时就进行了各个item项的position与mCurrentItem进行对比.最后通过if语句来执行对比后的设置.在我们的Activity中,我们调用了Adapter中的两个对外开放的方法分别是设置点击事件和设置当前的item项的position.最后再调用Adapter的notifyDatasetChanged().刷新Listview.

相关文章:

  • 最长递增子序列 java_动态规划深入6 最长递增子序列
  • yml mysql参数_yml配置--给参数设置默认值
  • ant java eclipse_(转)Eclipse中使用Ant
  • java json merge_JavaScript 如何合并两个Json对象
  • java setselectionend_Java Gallery.setSelection方法代码示例
  • stringbuffer java API_StringBuffer类
  • jasperreport java数据_ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf...
  • 与时间相关的java源码_JAVA的Date类与Calendar类
  • Java修改文件扩展属性_扩展PropertyPlaceholderConfigurer对prop文件中的属性加密(修正1)...
  • java定义显性构造函数_Java基础之三、类的特性和接口
  • mysql用其他表更新_mysql用一个表更新另一个表
  • java maven 打包jar_maven 打包可执行 jar包 java application 方法
  • java专业考独立本科_复旦大学-计算机网络(独立本科B080709)(停考过渡)
  • java 自定义组件状态改变事件_Swing自定义事件-一个组件的事件传递给另一个组件...
  • 迁移到php7,PHP扩展迁移为PHP7扩展兼容性问题记录
  • [笔记] php常见简单功能及函数
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Electron入门介绍
  • javascript 总结(常用工具类的封装)
  • Mithril.js 入门介绍
  • SwizzleMethod 黑魔法
  • Unix命令
  • 产品三维模型在线预览
  • 二维平面内的碰撞检测【一】
  • 微信小程序开发问题汇总
  • 用Canvas画一棵二叉树
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #### go map 底层结构 ####
  • #1014 : Trie树
  • #ifdef 的技巧用法
  • (3)nginx 配置(nginx.conf)
  • (C语言)共用体union的用法举例
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (js)循环条件满足时终止循环
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (第二周)效能测试
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)创业的注意事项
  • (转)大道至简,职场上做人做事做管理
  • .gitignore
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net 反编译_.net反编译的相关问题
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件