Examples of commonly used listview management for android
Listview, as a common control, should be familiar with listview operations. You are also familiar with listview data management. The options include "click", "double-click", "select" delete "," refresh ", and" add data. I wrote a demo for the listview management operation again. It contains some of the operations I have mentioned. Based on this demo, you can refer to the implementation to perform more operations.
Source Code address: Download
1. Implementation results
2. Main Code
Package com. example. listmanage; import java. util. arrayList; import java. util. permission list; import android. OS. bundle; import android. app. activity; import android. content. context; import android. view. layoutInflater; import android. view. view; import android. view. view. onClickListener; import android. view. viewGroup; import android. view. window; import android. widget. adapterView; import android. widget. adapterView. onItemClickListener; import android. widget. baseAdapter; import android. widget. button; import android. widget. checkBox; import android. widget. compoundButton; import android. widget. compoundButton. onCheckedChangeListener; import android. widget. listView; import android. widget. textView; import android. widget. toast; public class MainActivity extends Activity implements OnClickListener, OnCheckedChangeListener {class ItemStatus {public boolean mIsCheckBoxVisible = false; public boolean mIsCheckBoxSelected = false ;} // record whether each project is selected on the UI.
MItemsExtendData; // listview data source private ArrayList
MList; private ListView mListView; // adapter private ListAdapt mListAdapt; private TextView mtextviewShow; // edit or complete private Button mbuttonEdit; // Edit to display the selected checkboxprivate boolean mbStatueShow = false; // private arr @ Overrideprotected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); requestWindowFeature (Window. FEATURE_NO_TITLE); setContentView (R. layout. activity_main); initData (); initView ();} private void initView () {mListView = (ListView) findViewById (R. id. listView1); mListAdapt = new ListAdapt (this); mListView. setAdapter (mListAdapt); ToolUtil. reCalListViewHeightBasedOnChildren (mListView); mListView. setOnItemClickListener (new ListItemonClick (); mbuttonEdit = (Button) findViewById (R. id. buttonEdit); mbuttonEdit. setOnClickListener (this); CheckBox cBox = (CheckBox) findViewById (R. id. checkBox1); cBox. setOnCheckedChangeListener (this); TextView textviewDetele = (TextView) findViewById (R. id. textviewDetele); textviewDetele. setOnClickListener (this); mtextviewShow = (TextView) findViewById (R. id. textviewShow); mtextviewShow. setText ("selected" + String. valueOf (0) + "item"); findViewById (R. id. layoutBottom ). setVisibility (View. GONE); findViewById (R. id. layoutBottomNew ). setVisibility (View. VISIBLE);} private void initData () {mList = new ArrayList
(); MList. clear (); for (int I = 0; I <25; I ++) {mList. add ("th" + String. valueOf (I) + "item");} InitListViewExtendData (); SetShowStatus (false);} // set each item to private void SetShowStatus (Boolean bStatueShow) {mbStatueShow = bStatueShow; if (mbStatueShow) {// traverse the listView data source and set the hide and display of some controls for (ItemStatus ItemData: GetItemsExtendData () {ItemData. mIsCheckBoxSelected = false; ItemData. mIsCheckBoxVisible = True ;}} else {// traverse the listView data source and set the hide and display of some controls for (ItemStatus ItemData: GetItemsExtendData () {ItemData. mIsCheckBoxSelected = false; ItemData. mIsCheckBoxVisible = false ;}} if (mListAdapt! = Null) {// use listview to manually calculate the height ToolUtil. reCalListViewHeightBasedOnChildren (mListView); mListAdapt. notifyDataSetChanged () ;}}// Click Event private class ListItemonClick implements OnItemClickListener {@ Overridepublic void onItemClick (AdapterView parent, View view, int position, long id) in listview) {CheckBox isSelectedCheckBox = (CheckBox) view. findViewById (R. id. checkBox1); // click to process the editing status and select if (mbStatueShow) {if (isSelected CheckBox! = Null) isSelectedCheckBox. setChecked (! IsSelectedCheckBox. isChecked (); return;} Toast. makeText (MainActivity. this, "click" + String. valueOf (position), Toast. LENGTH_LONG ). show () ;}// internal class ViewHolder {TextView titleTextView; CheckBox selectCheckBox;} class ListAdapt extends BaseAdapter implements OnCheckedChangeListener {private Context mContext; private LayoutInflater mLayoutInflater; public ListAdapt (Context context) {mContext = context; MLayoutInflater = (LayoutInflater) mContext. getSystemService (Context. LAYOUT_INFLATER_SERVICE);} @ Overridepublic int getCount () {return mList. size () ;}@ Overridepublic Object getItem (int position) {return position ;}@ Overridepublic long getItemId (int position) {return 0 ;}@ Overridepublic View getView (int position, view convertView, ViewGroup parent) {ViewHolder vHolder = null; if (convertView = null ){ VHolder = new ViewHolder (); convertView = mLayoutInflater. inflate (R. layout. activity_main_list_item, null); vHolder. titleTextView = (TextView) convertView. findViewById (R. id. textView1); vHolder. selectCheckBox = (CheckBox) convertView. findViewById (R. id. checkBox1); convertView. setTag (vHolder);} else {vHolder = (ViewHolder) convertView. getTag ();} vHolder. titleTextView. setText (mList. get (position); if (GetIte MsExtendData (). size ()! = 0) {ItemStatus itemStatus = GetItemsExtendData (). get (position); if (itemStatus! = Null & vHolder. selectCheckBox! = Null) {vHolder. selectCheckBox. setTag (position); vHolder. selectCheckBox. setOnCheckedChangeListener (this); vHolder. selectCheckBox. setVisibility (itemStatus. mIsCheckBoxVisible = true? View. VISIBLE: View. INVISIBLE); vHolder. selectCheckBox. setChecked (itemStatus. mIsCheckBoxSelected) ;}} return convertView ;}@ Overridepublic void onCheckedChanged (CompoundButton buttonView, boolean isChecked) {Integer nPosition = (Integer) (buttonView. getTag (); GetItemsExtendData (). get (nPosition. intValue ()). mIsCheckBoxSelected = isChecked; // obtain the number of all selected items currently -- if there is a large amount of data, int nSelectCount = 0; for (ItemStatus ItemData: GetItemsExtendData ()) {if (ItemData. mIsCheckBoxSelected = true) nSelectCount + = 1;} mtextviewShow. setText ("selected" + String. valueOf (nSelectCount) + "item") ;}// private void InitListViewExtendData () {GetItemsExtendData (). clear (); int nItemCount = mList. size (); for (int I = 0; I <nItemCount; I ++) {ItemStatus itemData = new ItemStatus (); GetItemsExtendData (). add (itemData) ;}} private partition list
GetItemsExtendData () {if (mItemsExtendData = null) mItemsExtendData = new external list
(); Return mItemsExtendData;} protected ArrayList
GetRemoveCount () {// retrieve the Index Array ArrayList to be deleted
NeedRemoveItemsIndexArray = new ArrayList
(); For (int I = 0; I <GetItemsExtendData (). size (); I ++) {ItemStatus itemData = GetItemsExtendData (). get (I); if (itemData. mIsCheckBoxSelected = true) needRemoveItemsIndexArray. add (new Integer (I);} return needRemoveItemsIndexArray;} @ Overridepublic void onClick (View v) {switch (v. getId () {case R. id. buttonEdit: if (mbStatueShow) {mbuttonEdit. setText ("edit"); SetShowStatus (false); findViewById (R. id. layoutBottom ). setVisibility (View. GONE); findViewById (R. id. layoutBottomNew ). setVisibility (View. VISIBLE);} else {SetShowStatus (true); mbuttonEdit. setText ("finished"); findViewById (R. id. layoutBottomNew ). setVisibility (View. GONE); findViewById (R. id. layoutBottom ). setVisibility (View. VISIBLE);} break; case R. id. textviewDetele: ArrayList
NeedRemoveItemsIndexArray = getRemoveCount (); // Delete the specified item for (int I = needRemoveItemsIndexArray. size ()-1; I> = 0; I --) {mList. remove (needRemoveItemsIndexArray. get (I ). intValue ();} InitListViewExtendData (); SetShowStatus (true); break; default: break ;}@overridepublic void onCheckedChanged (CompoundButton buttonView, boolean isChecked) {switch (buttonView. getId () {case R. id. checkBox1: if (isChecked) {for (It EmStatus ItemData: GetItemsExtendData () {ItemData. mIsCheckBoxSelected = true; ItemData. mIsCheckBoxVisible = true;} mtextviewShow. setText ("selected" + String. valueOf (mList. size () + "item");} else {for (ItemStatus ItemData: GetItemsExtendData () {ItemData. mIsCheckBoxSelected = false; ItemData. mIsCheckBoxVisible = true;} mtextviewShow. setText ("selected" + String. valueOf (0) + "item");} if (mListAdapt! = Null) {ToolUtil. ReCalListViewHeightBasedOnChildren (mListView); mListAdapt. yydatasetchanged () ;}break; default: break ;}}}
3. Manual Calculation of listview height Tool
package com.example.listmanage;import android.view.View;import android.view.ViewGroup;import android.widget.ListAdapter;import android.widget.ListView;public class ToolUtil { public static void ReCalListViewHeightBasedOnChildren(ListView listView) {if (listView == null) return;ListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) return;int nTotalHeight = 0;for (int i = 0; i < listAdapter.getCount(); i++) {View listItem = listAdapter.getView(i, null, listView);listItem.measure(0, 0);nTotalHeight += listItem.getMeasuredHeight();}ViewGroup.LayoutParams params = listView.getLayoutParams();params.height = nTotalHeight + (listView.getDividerHeight()*(listAdapter.getCount()-1)); }}
The xml layout file will not be pasted. You are interested in downloading the source code. You do not need to download credits.
Source Code address: Download