zoukankan      html  css  js  c++  java
  • 动态改变Listview的item背景颜色和item中字体的颜色

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

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

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

    <span style="font-size:24px;">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<String> list=new ArrayList<String>();
        @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.

    原文章链接:http://blog.csdn.net/qq_14813933/article/details/50417859

  • 相关阅读:
    [转]Xcode4.5.1破解iOS免证书开发真机调试与ipa发布
    [转]QT多线程异步调用
    [转]Clone Object as instance in OgreMax
    [转]Texture atlas extension to the RTSS
    [转]QT中线程调用GUI主线程控件的问题
    c语言打印菱形解析
    今天开始第一次win32汇编之旅 先搭建编程环境吧
    MSHFlexGrid控件
    用1602模拟电子钟功能
    Combobox控件使用
  • 原文地址:https://www.cnblogs.com/zrdm/p/7339489.html
Copyright © 2011-2022 走看看