Android实现频道列表ListView的编辑/删除/移动等功能
2015-02-11 15:45
1036 查看
Android实现频道列表的编辑、删除、移动等功能,这里我把频道的部分去除掉,只是记录下来关于这个ListVIew的一些编辑、删除和移动等功能,记录下来,以便查询!
实现效果:
布局文件这里就不放了,其实就是一个ListView。
首先定义一个类,用以记录频道的基本信息,包括名字、频道号、图标等信息
将频道信息保存到ArrayList中,然后传入自定义的Adapter中去
实现效果:
布局文件这里就不放了,其实就是一个ListView。
首先定义一个类,用以记录频道的基本信息,包括名字、频道号、图标等信息
package com.Javen; public class programInfo { private String tvNumber = null; private String tvName = null; private int tvIconId; private boolean isDelete = false; public String getTvNumber() { return tvNumber; } public void setTvNumber(String tvNumber) { this.tvNumber = tvNumber; } public String getTvName() { return tvName; } public void setTvName(String tvName) { this.tvName = tvName; } public int getTvIcon() { return tvIconId; } public void setTvIcon(int tvIconId) { this.tvIconId = tvIconId; } public boolean isDelete() { return isDelete; } public void setDelete(boolean isDelete) { this.isDelete = isDelete; } }
将频道信息保存到ArrayList中,然后传入自定义的Adapter中去
package com.Javen; import java.util.ArrayList; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; public class programAdapter extends BaseAdapter { private Context activity; private ArrayList<programInfo> mData = null; public programAdapter(Context context, ArrayList<programInfo> mData) { super(); this.activity = context; this.mData = mData; } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(activity).inflate(R.layout.program_list_view_item, null); /* 电视频道的Number号 */ TextView tvItemNumber = (TextView)convertView.findViewById(R.id.programnumber); tvItemNumber.setText(mData.get(position).getTvNumber()); /* 电视频道的名称 */ TextView tvItemName = (TextView)convertView.findViewById(R.id.programName); tvItemName.setText(mData.get(position).getTvName()); /* 电视频道Icon */ ImageView tvItemImage = (ImageView)convertView.findViewById(R.id.programIcon); tvItemImage.setBackgroundResource(mData.get(position).getTvIcon()); return convertView; } }
package com.Javen; import java.util.ArrayList; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnKeyListener; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; public class ListViewDemoActivity extends Activity { /** Called when the activity is first created. */ private static final String TAG = "ListViewDemoActivity"; private ListView listView; private Button skipButton, editButton, deleteButton, moveButton; private int moveSelectId; /* 电视频道号 */ // private String[] tvNumbers = {"1","2","3","4","5","6","7","8","9","10"}; /* 电视频道名称 */ private String[] tvNames = {"江西卫视", "深圳卫视", "河南卫视", "河北卫视", "湖南卫视", "湖北卫视", "贵州卫视", "安徽卫视", "北京卫视", "天津卫视"}; /* 电视图标 */ private int tvIconId = R.drawable.list_menu_img_dtv_foucus; /* 电视Item数组 */ private ArrayList<programInfo> tvItems = new ArrayList<programInfo>(); private ArrayList<programInfo> refreshTvItems = new ArrayList<programInfo>(); /* 自定义Adapter */ private programAdapter mAdapter = null; /* 判断是否移动 */ private boolean isMove = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); findView(); setListProgramItem(); refreshTvItems.addAll(tvItems); mAdapter = new programAdapter(ListViewDemoActivity.this, refreshTvItems); listView.setAdapter(mAdapter); listView.setDividerHeight(0); listView.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_DPAD_UP && isMove) { if(moveSelectId == 0){ return false; }else{ swapItemObject(moveSelectId, moveSelectId-1); } }else if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN && isMove){ if(moveSelectId == (refreshTvItems.size()-1)){ return false; }else{ swapItemObject(moveSelectId, moveSelectId+1); } } return false; } }); } private void findView() { listView = (ListView)findViewById(R.id.listview); skipButton = (Button)findViewById(R.id.skip); editButton = (Button)findViewById(R.id.edit); deleteButton = (Button)findViewById(R.id.delete); moveButton = (Button)findViewById(R.id.move); } private void setListProgramItem() { for(int i = 0; i < tvNames.length; i++) { programInfo info = new programInfo(); info.setTvNumber(String.valueOf(i)); info.setTvName(tvNames[i]); info.setTvIcon(tvIconId); info.setDelete(false); tvItems.add(info); } } private void RefreshProgramList() { for(int i = 0; i < refreshTvItems.size(); i++) { programInfo itemInfo = refreshTvItems.get(i); if(itemInfo.isDelete()) { refreshTvItems.remove(i); } } for(int i = 0; i < refreshTvItems.size(); i++) { refreshTvItems.get(i).setTvNumber(String.valueOf(i)); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub switch(keyCode) { case KeyEvent.KEYCODE_1://跳跃 setListProgramItem(); refreshTvItems.clear(); refreshTvItems.addAll(tvItems); mAdapter.notifyDataSetChanged(); listView.invalidate(); break; case KeyEvent.KEYCODE_2://编辑 editFunction(); break; case KeyEvent.KEYCODE_3://删除 deleteFunction(); break; case KeyEvent.KEYCODE_4://移动 moveFunction(); break; } return super.onKeyDown(keyCode, event); } private void editFunction() { final View editview = LayoutInflater.from(this).inflate(R.layout.program_edit_dialog, null); new AlertDialog.Builder(this) .setTitle(R.string.str_program_edit_dialog_input) .setIcon(android.R.drawable.ic_dialog_info) .setView(editview) .setPositiveButton(R.string.str_program_edit_dialog_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EditText editText = (EditText)editview.findViewById(R.id.editText); String name = editText.getText().toString(); int selectItemID = (int)listView.getSelectedItemId(); tvItems.get(selectItemID).setTvName(name); mAdapter.notifyDataSetChanged(); listView.invalidate(); } }).setNegativeButton(R.string.str_program_edit_dialog_cancel, null) .show(); } private void deleteFunction() { int selectItemId = (int)listView.getSelectedItemId(); refreshTvItems.get(selectItemId).setDelete(true); RefreshProgramList(); mAdapter.notifyDataSetChanged(); listView.invalidate(); } private void moveFunction() { isMove = !isMove; moveSelectId = (int)listView.getSelectedItemId(); if(isMove){ skipButton.setVisibility(View.GONE); editButton.setVisibility(View.GONE); deleteButton.setVisibility(View.GONE); }else{ skipButton.setVisibility(View.VISIBLE); editButton.setVisibility(View.VISIBLE); deleteButton.setVisibility(View.VISIBLE); } } private void swapItemObject(int prex, int next) { programInfo temp = new programInfo(); temp.setTvName(refreshTvItems.get(prex).getTvName()); temp.setTvIcon(refreshTvItems.get(prex).getTvIcon()); refreshTvItems.get(prex).setTvName(refreshTvItems.get(next).getTvName()); refreshTvItems.get(prex).setTvIcon(refreshTvItems.get(next).getTvIcon()); refreshTvItems.get(next).setTvName(temp.getTvName()); refreshTvItems.get(next).setTvIcon(temp.getTvIcon()); mAdapter.notifyDataSetChanged(); listView.invalidate(); } }
相关文章推荐
- Android 仿联系人列表 实现ListView的A-Z字母排序和过滤搜索功能,并挤压效果
- MVVM范例:实现 用户列表绑定、编辑 、删除、添加及筛选功能
- Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能
- Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能
- Android基于SwipeMenuListView实现滑动删除功能
- Android-实现ListView左右滑动删除和编辑(仿微信电话本)
- Android程序开发之ListView 与PopupWindow实现从左向右滑动删除功能
- android中listview的长按删除多选功能实现
- Android 仿联系人列表 实现ListView的A-Z字母排序和过滤搜索功能
- Android自定义ListView实现仿QQ可拖拽列表功能
- Android 实现用户列表信息滑动删除功能和选择删除功能
- listview 实现微信删除功能向左移动item出现隐藏的删除按钮功能终于实现了,分享总结一下。(跟微信删除一样额)
- Android仿微信列表滑动删除 如何实现滑动列表SwipeListView
- C#语言实现创建、删除和移动文件夹及其文件夹列表功能
- android 继承ListView实现滑动删除功能.
- android listview 滑动删除加刷新功能 仿QQ消息列表
- Android 仿联系人列表 实现ListView的A-Z字母排序和过滤搜索功能,并挤压效果(一)
- Android 实现用户列表信息的功能,然后选择删除幻灯片删除功能
- Android中ListView绑定CheckBox实现全选增加和删除功能(DEMO)
- Android ListView长按弹出CheckBox,实现全选,反选,批量删除功能