麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Android > 正文

listview 選中高亮顯示實現方法

2020-04-11 12:41:03
字體:
來源:轉載
供稿:網友
人人客戶端有一個很好的導航欄,如下圖所示,當點擊左側ListView后,選中的一行就會一直呈高亮狀態顯示,圖中選中行字的顏色顯示為藍色(注意:是選中行后一直高亮,而不是只是點擊時高亮),如果再次點擊另外的一行, 則新的那一行就高亮,下面就來實現這個高亮效果的顯示;
 
剛開始實現的時候,我打算使用ListView的 getChildAt(int
pos)方法來實現,結果發現非常的cao蛋,因為ListView本身的原因,當你View
view=listView.getChildAt(pos),并且改變這個View的狀態時,你會發現,高亮的往往不是你
選中的那行,反而是其他行,這是由于ListView本身決定了,Google在設計ListView的時候,為了減少內存的消耗,使 用了一種共用的方式,即多個行共用一個View,所以才會出現點擊后亂跳的現象(這是一種很高明的方法,不過也苦了程序猿們);
于是就選擇了另外一種方式,ListView都有一個Adapter來顯示數據,而這個Adapter中的getView()卻能獲得準確的每一行,這里我們需要自定義一個繼承自BaseAdapter的Adapter來實現(如果使用ArrayAdapter等自帶的Adapter時,不會實現這樣的功能);另外,這個ListView一定要設置一個屬性:listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
即設置為單選模式,這樣當你點擊一行后,ListView就會刷新界面,還有就是給ListView設置OnItemClickListener監聽器, 當點擊一行后,就更新當前行的下標,所有代碼如下所示:
復制代碼 代碼如下:

public class ListViewDemo extends Activity {
private ListView listview;
private int cur_pos = 0;// 當前顯示的一行
private String[] items_text = { "選項一", "選項二", "選項三", "選項四", "選項五" };
private int[] items_img = { R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view_demo);
listview = (ListView) findViewById(R.id.listview);
final MyAdapter adapter = new MyAdapter(this);
listview.setAdapter(adapter);
listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);// 一定要設置這個屬性,否則ListView不會刷新
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long id) {
cur_pos = position;// 更新當前行
}
});
}
private class MyAdapter extends BaseAdapter {
private LayoutInflater inflater;
public MyAdapter(Context context) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return items_text.length;
}
@Override
public Object getItem(int position) {
return items_text[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.e("TEST", "refresh once");
convertView = inflater.inflate(R.layout.list_child, null, false);
ImageView img = (ImageView) convertView
.findViewById(R.id.list_child_img);// 用于顯示圖片
TextView tv = (TextView) convertView
.findViewById(R.id.list_child_text);// 顯示文字
tv.setText(items_text[position]);
img.setImageResource(items_img[position]);
if (position == cur_pos) {// 如果當前的行就是ListView中選中的一行,就更改顯示樣式
convertView.setBackgroundColor(Color.LTGRAY);// 更改整行的背景色
tv.setTextColor(Color.RED);// 更改字體顏色
}
return convertView;
}
}
}
public class ListViewDemo extends Activity {
private ListView listview;
private int cur_pos = 0;// 當前顯示的一行
private String[] items_text = { "選項一", "選項二", "選項三", "選項四", "選項五" };
private int[] items_img = { R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view_demo);
listview = (ListView) findViewById(R.id.listview);
final MyAdapter adapter = new MyAdapter(this);
listview.setAdapter(adapter);
listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);// 一定要設置這個屬性,否則ListView不會刷新
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long id) {
cur_pos = position;// 更新當前行
}
});
}
private class MyAdapter extends BaseAdapter {
private LayoutInflater inflater;
public MyAdapter(Context context) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return items_text.length;
}
@Override
public Object getItem(int position) {
return items_text[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.e("TEST", "refresh once");
convertView = inflater.inflate(R.layout.list_child, null, false);
ImageView img = (ImageView) convertView
.findViewById(R.id.list_child_img);// 用于顯示圖片
TextView tv = (TextView) convertView
.findViewById(R.id.list_child_text);// 顯示文字
tv.setText(items_text[position]);
img.setImageResource(items_img[position]);
if (position == cur_pos) {// 如果當前的行就是ListView中選中的一行,就更改顯示樣式
convertView.setBackgroundColor(Color.LTGRAY);// 更改整行的背景色
tv.setTextColor(Color.RED);// 更改字體顏色
}
return convertView;
}
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av电影在线观看网址 | 久久久www成人免费毛片 | 久久精品a一级国产免视看成人 | 国产羞羞视频在线观看免费应用 | 久久久久久久久成人 | a视频在线免费观看 | 成人午夜视频免费 | 天天干干| 久久久无码精品亚洲日韩按摩 | 精品乱码久久久久 | 欧美日本91精品久久久久 | 精品国产一区二区三区四区在线 | 九九热在线精品视频 | 九九热精品视频在线免费观看 | 噜噜在线视频 | 欧美日韩精品不卡一区二区三区 | 一级黄色免费大片 | 欧美一级淫片免费视频1 | 国产精品视频二区不卡 | 久久蜜桃香蕉精品一区二区三区 | 久久久久久久亚洲精品 | 毛片av网址 | 精品久久久久久久久久久久久久久久久久久 | 激情五月少妇a | 国产欧美精品一区二区三区四区 | 久久国产夫妻视频 | 久久久久久久一区 | 999精品国产 | 精品国产一区二区三区久久久 | 深夜影院a | 成人毛片免费视频 | 日本在线视频二区 | 亚洲第一页在线观看 | 国产精品亚洲一区二区三区久久 | 污黄视频在线播放 | 日韩视频一区在线 | 黄色一级片毛片 | 久久久久久久亚洲精品 | 免费看日产一区二区三区 | 成人福利视频在线 | 国产精品爱久久久久久久 |