動態改變Listview的item背景顏色和item中字體的顏色
阿新 • • 發佈:2017-08-10
學習 動態 ide save pos oid eol graphics -s
首先非常感謝原文章作者。
今天項目用到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
動態改變Listview的item背景顏色和item中字體的顏色