Android ListView点击item 显示隐匿菜单项

淡淡的烟草味﹌ 2023-10-16 19:36 118阅读 0赞

解决思路:

Center

Demo:

  1. package com.activity.gdbk;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.app.Activity;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.os.Vibrator;
  9. import android.view.LayoutInflater;
  10. import android.view.View;
  11. import android.view.Window;
  12. import android.view.WindowManager;
  13. import android.view.View.OnClickListener;
  14. import android.view.ViewGroup;
  15. import android.widget.AdapterView;
  16. import android.widget.AdapterView.OnItemClickListener;
  17. import android.widget.AdapterView.OnItemLongClickListener;
  18. import android.widget.BaseAdapter;
  19. import android.widget.LinearLayout;
  20. import android.widget.ListView;
  21. import android.widget.TextView;
  22. public class ListActivity extends Activity implements OnItemClickListener, OnItemLongClickListener {
  23. //自定义相关组件
  24. private ListView listview;
  25. private MyAdapter adapter;
  26. //activity 数据源
  27. private List<String> data;
  28. //activity 标量
  29. private int currentPosition = -1;
  30. @Override
  31. public void onCreate(Bundle savedInstanceState) {
  32. // TODO Auto-generated method stub
  33. super.onCreate(savedInstanceState);
  34. //全屏模式
  35. this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  36. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  37. this.requestWindowFeature(Window.FEATURE_NO_TITLE);
  38. setContentView(R.layout.activity_listview);
  39. initView();
  40. setData();
  41. }
  42. //自定义相关方法
  43. private void initView() {
  44. listview = (ListView) findViewById(R.id.listview);
  45. listview.setOnItemClickListener(this);
  46. listview.setOnItemLongClickListener(this);
  47. }
  48. private void setData() {
  49. data = new ArrayList<String>();
  50. for (int i = 0; i < 10; i++) {
  51. data.add("员工姓名" + i);
  52. }
  53. if (adapter == null) {
  54. adapter = new MyAdapter(this, data);
  55. listview.setAdapter(adapter);
  56. } else {
  57. adapter.notifyDataSetChanged();
  58. }
  59. }
  60. @Override
  61. protected void onResume() {
  62. updateNoteBookList();
  63. super.onResume();
  64. }
  65. private void updateNoteBookList() {
  66. if (adapter != null) {
  67. setData();
  68. adapter.notifyDataSetChanged();
  69. }
  70. }
  71. //覆写相关方法
  72. @Override
  73. public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position,
  74. long arg3) {
  75. // TODO Auto-generated method stub
  76. Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
  77. vibrator.vibrate(40);
  78. currentPosition = position;
  79. adapter.notifyDataSetChanged();
  80. return true;
  81. }
  82. @Override
  83. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
  84. // TODO Auto-generated method stub
  85. currentPosition = -1;
  86. adapter.notifyDataSetChanged();
  87. }
  88. //内部类---自定义适配器
  89. public class MyAdapter extends BaseAdapter{
  90. private Context context;
  91. private LayoutInflater inflater;
  92. private List<String> fileTypeList;
  93. //适配器构造函数
  94. public MyAdapter(Context context, List<String> fileTypeList) {
  95. this.context = context;
  96. this.fileTypeList = fileTypeList;
  97. inflater=LayoutInflater.from(context);
  98. }
  99. @Override
  100. public int getCount() {
  101. // TODO Auto-generated method stub
  102. return fileTypeList.size();
  103. }
  104. @Override
  105. public Object getItem(int arg0) {
  106. // TODO Auto-generated method stub
  107. return fileTypeList.get(arg0);
  108. }
  109. @Override
  110. public long getItemId(int position) {
  111. // TODO Auto-generated method stub
  112. return position;
  113. }
  114. @Override
  115. public View getView(int position, View convertView, ViewGroup parent) {
  116. // TODO Auto-generated method stub
  117. ViewHolder holder = null;
  118. if (convertView == null) {
  119. convertView = inflater.inflate(R.layout.listview_item, parent, false);
  120. holder = new ViewHolder();
  121. holder.fileNameText = (TextView) convertView.findViewById(R.id.item_name);
  122. holder.fileTimeText = (TextView) convertView.findViewById(R.id.item_time);
  123. holder.fileSizeText = (TextView) convertView.findViewById(R.id.item_pm);
  124. holder.linearLayout = (LinearLayout) convertView.findViewById(R.id.layout_other);
  125. holder.openLinearLayout = (LinearLayout) convertView.findViewById(R.id.item_open);
  126. holder.editLinearLayout = (LinearLayout) convertView.findViewById(R.id.item_edit);
  127. holder.moveLinearLayout = (LinearLayout) convertView.findViewById(R.id.item_move);
  128. holder.deleteLinearLayout = (LinearLayout) convertView.findViewById(R.id.item_delete);
  129. convertView.setTag(holder);
  130. } else {
  131. holder = (ViewHolder) convertView.getTag();
  132. }
  133. //填充相关数据信息
  134. String strs = fileTypeList.get(position);
  135. holder.fileNameText.setText(strs);
  136. holder.fileTimeText.setText("");
  137. holder.fileSizeText.setText("");
  138. //item 显示隐藏菜单
  139. if (position == currentPosition) {
  140. holder.linearLayout.setVisibility(View.VISIBLE);
  141. holder.openLinearLayout.setClickable(true);
  142. holder.editLinearLayout.setClickable(true);
  143. holder.moveLinearLayout.setClickable(true);
  144. holder.deleteLinearLayout.setClickable(true);
  145. holder.openLinearLayout.setOnClickListener(new OnClickListener() {
  146. @Override
  147. public void onClick(View v) {
  148. //饼状图页面
  149. Intent pie=new Intent(ListActivity.this,PieActivity.class);
  150. startActivity(pie);
  151. }
  152. });
  153. holder.editLinearLayout.setOnClickListener(new OnClickListener() {
  154. @Override
  155. public void onClick(View v) {
  156. // TODO Auto-generated method stub
  157. //柱状图页面
  158. Intent intent=new Intent(ListActivity.this,BarActivity.class);
  159. startActivity(intent);
  160. }
  161. });
  162. holder.moveLinearLayout.setOnClickListener(new OnClickListener() {
  163. @Override
  164. public void onClick(View v) {
  165. //散点图页面
  166. Intent scatter=new Intent(ListActivity.this,ScatterAtivity.class);
  167. startActivity(scatter);
  168. }
  169. });
  170. holder.deleteLinearLayout.setOnClickListener(new OnClickListener() {
  171. @Override
  172. public void onClick(View v) {
  173. // TODO Auto-generated method stub
  174. 折线图页面
  175. Intent linear=new Intent(ListActivity.this,LinearActivity.class);
  176. startActivity(linear);
  177. }
  178. });
  179. } else {
  180. holder.linearLayout.setVisibility(View.GONE);
  181. holder.openLinearLayout.setClickable(false);
  182. holder.editLinearLayout.setClickable(false);
  183. holder.moveLinearLayout.setClickable(false);
  184. holder.deleteLinearLayout.setClickable(false);
  185. }
  186. return convertView;
  187. }
  188. }
  189. //内部类-----自定义组件
  190. public class ViewHolder{
  191. public TextView fileNameText;
  192. public TextView fileTimeText;
  193. public TextView fileSizeText;
  194. public LinearLayout linearLayout;
  195. public LinearLayout openLinearLayout;
  196. public LinearLayout editLinearLayout;
  197. public LinearLayout moveLinearLayout;
  198. public LinearLayout deleteLinearLayout;
  199. }
  200. }

布局文件:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="fill_parent"
  3. android:layout_height="fill_parent"
  4. android:orientation="vertical" >
  5. <ListView
  6. android:id="@+id/listview"
  7. android:layout_width="fill_parent"
  8. android:layout_height="fill_parent"
  9. android:layout_weight="1.0" />
  10. </LinearLayout>
  11. <?xml version="1.0" encoding="utf-8"?>
  12. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  13. android:layout_width="fill_parent"
  14. android:layout_height="fill_parent"
  15. android:background="@drawable/list_selector"
  16. android:orientation="vertical" >
  17. <RelativeLayout
  18. android:id="@+id/item_layout"
  19. android:layout_width="fill_parent"
  20. android:layout_height="wrap_content"
  21. android:orientation="vertical" >
  22. <LinearLayout
  23. android:layout_width="fill_parent"
  24. android:layout_height="wrap_content"
  25. android:layout_marginBottom="5dip"
  26. android:layout_marginLeft="5dip"
  27. android:layout_marginTop="5dip"
  28. android:orientation="vertical" >
  29. <TextView
  30. android:id="@+id/item_name"
  31. style="@style/note_name_text"
  32. android:layout_width="wrap_content"
  33. android:layout_height="wrap_content"
  34. android:layout_gravity="left"
  35. android:layout_marginLeft="5dip"
  36. android:layout_marginRight="5dip"
  37. android:layout_marginTop="5dip"
  38. android:maxWidth="240dip"
  39. android:textColor="#fff" />
  40. <LinearLayout
  41. android:layout_width="fill_parent"
  42. android:layout_height="wrap_content"
  43. android:layout_marginTop="5dip"
  44. android:orientation="horizontal" >
  45. <TextView
  46. android:id="@+id/item_time"
  47. android:layout_width="wrap_content"
  48. android:layout_height="wrap_content"
  49. android:layout_gravity="bottom|left"
  50. android:layout_marginRight="20dip"
  51. android:layout_weight="1"
  52. android:maxWidth="240dip"
  53. android:textColor="#fff"
  54. android:textSize="12sp" />
  55. <TextView
  56. android:id="@+id/item_pm"
  57. android:layout_width="wrap_content"
  58. android:layout_height="wrap_content"
  59. android:layout_gravity="bottom|right"
  60. android:layout_marginLeft="20dip"
  61. android:layout_weight="1"
  62. android:textColor="#fff"
  63. android:textSize="12sp" />
  64. </LinearLayout>
  65. </LinearLayout>
  66. <ImageView
  67. android:layout_width="wrap_content"
  68. android:layout_height="wrap_content"
  69. android:layout_alignParentRight="true"
  70. android:layout_centerVertical="true"
  71. android:layout_gravity="right|center_vertical"
  72. android:layout_marginRight="5dip"
  73. android:background="@drawable/group_arrow_right"
  74. android:gravity="right|center_vertical" />
  75. </RelativeLayout>
  76. <LinearLayout
  77. android:id="@+id/layout_other"
  78. android:layout_width="fill_parent"
  79. android:layout_height="wrap_content"
  80. android:background="#808080"
  81. android:gravity="center"
  82. android:orientation="horizontal"
  83. android:visibility="gone" >
  84. <LinearLayout
  85. android:id="@+id/item_open"
  86. android:layout_width="fill_parent"
  87. android:layout_height="wrap_content"
  88. android:layout_weight="1"
  89. android:background="@drawable/list_selector1"
  90. android:clickable="false"
  91. android:orientation="vertical" >
  92. <ImageView
  93. android:layout_width="wrap_content"
  94. android:layout_height="wrap_content"
  95. android:layout_gravity="center_horizontal"
  96. android:background="@drawable/open_icon"
  97. android:gravity="right|center_vertical" />
  98. <TextView
  99. android:layout_width="wrap_content"
  100. android:layout_height="wrap_content"
  101. android:layout_gravity="center_horizontal"
  102. android:gravity="center_horizontal"
  103. android:text="饼状图"
  104. android:textColor="#fff"
  105. android:textSize="12sp" />
  106. </LinearLayout>
  107. <LinearLayout
  108. android:id="@+id/item_edit"
  109. android:layout_width="fill_parent"
  110. android:layout_height="wrap_content"
  111. android:layout_weight="1"
  112. android:clickable="false"
  113. android:background="@drawable/list_selector1"
  114. android:orientation="vertical" >
  115. <ImageView
  116. android:layout_width="wrap_content"
  117. android:layout_height="wrap_content"
  118. android:layout_gravity="center_horizontal"
  119. android:background="@drawable/edit_icon"
  120. android:gravity="right|center_vertical" />
  121. <TextView
  122. android:layout_width="wrap_content"
  123. android:layout_height="wrap_content"
  124. android:layout_gravity="center_horizontal"
  125. android:gravity="center_horizontal"
  126. android:text="柱状图"
  127. android:textColor="#fff"
  128. android:textSize="12sp" />
  129. </LinearLayout>
  130. <LinearLayout
  131. android:id="@+id/item_move"
  132. android:layout_width="fill_parent"
  133. android:layout_height="wrap_content"
  134. android:layout_weight="1"
  135. android:clickable="false"
  136. android:background="@drawable/list_selector1"
  137. android:orientation="vertical" >
  138. <ImageView
  139. android:layout_width="wrap_content"
  140. android:layout_height="wrap_content"
  141. android:layout_gravity="center_horizontal"
  142. android:background="@drawable/move_icon"
  143. android:gravity="right|center_vertical" />
  144. <TextView
  145. android:layout_width="wrap_content"
  146. android:layout_height="wrap_content"
  147. android:layout_gravity="center_horizontal"
  148. android:gravity="center_horizontal"
  149. android:text="散点图"
  150. android:textColor="#fff"
  151. android:textSize="12sp" />
  152. </LinearLayout>
  153. <LinearLayout
  154. android:id="@+id/item_delete"
  155. android:layout_width="fill_parent"
  156. android:layout_height="wrap_content"
  157. android:layout_weight="1"
  158. android:clickable="false"
  159. android:background="@drawable/list_selector1"
  160. android:orientation="vertical" >
  161. <ImageView
  162. android:layout_width="wrap_content"
  163. android:layout_height="wrap_content"
  164. android:layout_gravity="center_horizontal"
  165. android:background="@drawable/delete_icon"
  166. android:gravity="right|center_vertical" />
  167. <TextView
  168. android:layout_width="wrap_content"
  169. android:layout_height="wrap_content"
  170. android:layout_gravity="center_horizontal"
  171. android:gravity="center_horizontal"
  172. android:text="折线图"
  173. android:textColor="#fff"
  174. android:textSize="12sp" />
  175. </LinearLayout>
  176. </LinearLayout>
  177. </LinearLayout>

效果展示:

Center 1

发表评论

表情:
评论列表 (有 0 条评论,118人围观)

还没有评论,来说两句吧...

相关阅读