ListView的二级菜单——doublelist
2015-11-21 13:11
651 查看
先来看效果图
这里主要实现了一个二级菜单,并且将所点击的item的id以及名称传递出去。
下面来看代码
首先是布局,第一个就不用讲了,都是button,关键是下面这个doublelist。
这里就是两个listview拼接起来,然后设置adapter时,mainlist点击变色,变成morelist的主色,这样在视觉效果上就感觉像是mainlist打开了morelist一样。
然后就是两个listview的adapter:
ClassifyMainAdapter:
ClassifyMoreAdapter:
两个adapter是实现了点击变色。接下来是doublelist的主代码:
MainActiivy:
主要是点击button将想要显示的list的位置传过去。
DoubleListActivity:
这里主要的是对id的计算,添加了一个int a来过渡,将mainlist的postion乘以100,然后加上morelist的postion得到的值认为是这个所点击的item的id,并将这个id传递下去。这样每一个item也就有了对应的值id。并且还可以将这个item的名字传递下去。
这里我的数组是写在arrays.xml里的:
arrays.xml:
最后的显示界面就不说了,就是两个TextView。
代码很简单,但是这个二级菜单还比较实用,用处还比较多。希望能有帮助。
下面是源码
demo下载地址:http://download.csdn.net/detail/jiang89125/9288249
转载请注明出处:http://blog.csdn.net/jiang89125/article/details/49963725
这里主要实现了一个二级菜单,并且将所点击的item的id以及名称传递出去。
下面来看代码
首先是布局,第一个就不用讲了,都是button,关键是下面这个doublelist。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/classify_mainlist" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="20" android:background="#fff" android:cacheColorHint="#00000000" android:divider="#fff" android:dividerHeight="1px" android:fastScrollEnabled="true" android:listSelector="#00000000" android:scrollbars="none" /> <ListView android:id="@+id/classify_morelist" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="17" android:background="#fff" android:cacheColorHint="#00000000" android:divider="#ffebebeb" android:dividerHeight="0.5px" android:fastScrollEnabled="true" android:listSelector="#00000000"/> </LinearLayout>
这里就是两个listview拼接起来,然后设置adapter时,mainlist点击变色,变成morelist的主色,这样在视觉效果上就感觉像是mainlist打开了morelist一样。
然后就是两个listview的adapter:
ClassifyMainAdapter:
public class ClassifyMainAdapter extends BaseAdapter { private Context context; private String[] list; private int position; Holder hold; public ClassifyMainAdapter(Context context, String[] list,int position) { this.context = context; this.list = list; this.position = position; } public int getCount() { return list.length; } public Object getItem(int position) { return list[position]; } public long getItemId(int position) { return position; } public View getView(int arg0, View view, ViewGroup viewGroup) { if (view == null) { view = View.inflate(context, R.layout.item_classify_mainlist, null); hold = new Holder(view); view.setTag(hold); } else { hold = (Holder) view.getTag(); } hold.txt.setText(list[arg0].toString()); hold.layout.setBackgroundColor(0xFFEBEBEB); if (arg0 == position) { hold.layout.setBackgroundColor(0xFFFFFFFF); } return view; } public void setSelectItem(int position) { this.position = position; } public int getSelectItem() { return position; } private static class Holder { LinearLayout layout; TextView txt; public Holder(View view) { txt = (TextView) view.findViewById(R.id.tv_main); layout = (LinearLayout) view.findViewById(R.id.mainitem_layout); } } }
ClassifyMoreAdapter:
public class ClassifyMoreAdapter extends BaseAdapter { private Context context; private String[] text_list; private int position = 0; Holder hold; public ClassifyMoreAdapter(Context context, String[] text_list) { this.context = context; this.text_list = text_list; } public int getCount() { return text_list.length; } public Object getItem(int position) { return text_list[position]; } public long getItemId(int position) { return position; } public View getView(int arg0, View view, ViewGroup viewGroup) { if (view == null) { view = View.inflate(context, R.layout.item_classify_morelist, null); hold = new Holder(view); view.setTag(hold); } else { hold = (Holder) view.getTag(); } hold.txt.setText(text_list[arg0]); hold.txt.setTextColor(0xFF666666); if (arg0 == position) { hold.txt.setTextColor(0xFFFF8C00); } return view; } public void setSelectItem(int position) { this.position = position; } private static class Holder { TextView txt; public Holder(View view) { txt = (TextView) view.findViewById(R.id.moreitem_txt); } } }
两个adapter是实现了点击变色。接下来是doublelist的主代码:
MainActiivy:
public class MainActivity extends ActionBarActivity implements View.OnClickListener{ private Button btn_0,btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9,btn_10,btn_11,btn_12,btn_13, btn_14,btn_15; private Bundle bundle = new Bundle(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_0 = (Button) findViewById(R.id.btn_0); btn_1 = (Button) findViewById(R.id.btn_1); btn_2 = (Button) findViewById(R.id.btn_2); btn_3 = (Button) findViewById(R.id.btn_3); btn_4 = (Button) findViewById(R.id.btn_4); btn_5 = (Button) findViewById(R.id.btn_5); btn_6 = (Button) findViewById(R.id.btn_6); btn_7 = (Button) findViewById(R.id.btn_7); btn_8 = (Button) findViewById(R.id.btn_8); btn_9 = (Button) findViewById(R.id.btn_9); btn_10 = (Button) findViewById(R.id.btn_10); btn_11 = (Button) findViewById(R.id.btn_11); btn_12 = (Button) findViewById(R.id.btn_12); btn_13 = (Button) findViewById(R.id.btn_13); btn_14 = (Button) findViewById(R.id.btn_14); btn_15 = (Button) findViewById(R.id.btn_15); btn_0.setOnClickListener(this); btn_1.setOnClickListener(this); btn_2.setOnClickListener(this); btn_3.setOnClickListener(this); btn_4.setOnClickListener(this); btn_5.setOnClickListener(this); btn_6.setOnClickListener(this); btn_7.setOnClickListener(this); btn_8.setOnClickListener(this); btn_9.setOnClickListener(this); btn_10.setOnClickListener(this); btn_11.setOnClickListener(this); btn_12.setOnClickListener(this); btn_13.setOnClickListener(this); btn_14.setOnClickListener(this); btn_15.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_0: bundle.putInt("id",0); StartActivity(DoubleListActivity.class,bundle); break; case R.id.btn_1: bundle.putInt("id",1); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_2: bundle.putInt("id",2); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_3: bundle.putInt("id",3); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_4: bundle.putInt("id",4); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_5: bundle.putInt("id",5); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_6: bundle.putInt("id",6); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_7: bundle.putInt("id",7); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_8: bundle.putInt("id",8); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_9: bundle.putInt("id",9); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_10: bundle.putInt("id",10); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_11: bundle.putInt("id",11); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_12: bundle.putInt("id",12); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_13: bundle.putInt("id",13); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_14: bundle.putInt("id",14); StartActivity(DoubleListActivity.class, bundle); break; case R.id.btn_15: bundle.putInt("id",15); StartActivity(DoubleListActivity.class, bundle); break; } } private void StartActivity(Class activity, Bundle bundle){ Intent intent = new Intent(MainActivity.this,activity); intent.putExtras(bundle); startActivity(intent); } }
主要是点击button将想要显示的list的位置传过去。
DoubleListActivity:
public class DoubleListActivity extends ActionBarActivity{ private ListView mainlist; private ListView morelist; private String[] ClassifyMain; private String[][] ClassifyMore; ClassifyMainAdapter mainAdapter; ClassifyMoreAdapter moreAdapter; private int get_id; private int a = -1; private int main_postion = -1; private int list_id; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.doublelist_layout); initdata(); initview(); } private void initdata() { Bundle bundle = new Bundle(); bundle = this.getIntent().getExtras(); get_id = bundle.getInt("id"); ClassifyMain = getResources().getStringArray(R.array.main); ClassifyMore = new String[][] { getResources().getStringArray(R.array.more_0), getResources().getStringArray(R.array.more_1), getResources().getStringArray(R.array.more_2), getResources().getStringArray(R.array.more_3), getResources().getStringArray(R.array.more_4), getResources().getStringArray(R.array.more_5), getResources().getStringArray(R.array.more_6), getResources().getStringArray(R.array.more_7), getResources().getStringArray(R.array.more_8), getResources().getStringArray(R.array.more_9), getResources().getStringArray(R.array.more_10), getResources().getStringArray(R.array.more_11), getResources().getStringArray(R.array.more_12), getResources().getStringArray(R.array.more_13), getResources().getStringArray(R.array.more_14), getResources().getStringArray(R.array.more_15), }; } private void initview() { mainlist = (ListView) findViewById(R.id.classify_mainlist); morelist = (ListView) findViewById(R.id.classify_morelist); mainAdapter = new ClassifyMainAdapter(DoubleListActivity.this,ClassifyMain,get_id); mainAdapter.setSelectItem(get_id); mainlist.setAdapter(mainAdapter); mainlist.setSelection(get_id - 1); mainlist.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { initAdapter(ClassifyMore[position]); mainAdapter.setSelectItem(position); mainAdapter.notifyDataSetChanged(); a = position * 100; main_postion = position; } }); mainlist.setChoiceMode(ListView.CHOICE_MODE_SINGLE); initAdapter(ClassifyMore[get_id]); morelist.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { moreAdapter.setSelectItem(position); moreAdapter.notifyDataSetChanged(); if (a == -1){ a = get_id * 100; } if (main_postion == -1){ main_postion = get_id; } list_id = a + position; Bundle bundle = new Bundle(); bundle.putInt("list_id", list_id); bundle.putString("list_item", ClassifyMore[main_postion][position]); Intent intent = new Intent(DoubleListActivity.this,ResultActivity.class); intent.putExtras(bundle); startActivity(intent); } }); } private void initAdapter(String[] array) { moreAdapter = new ClassifyMoreAdapter(this, array); morelist.setAdapter(moreAdapter); moreAdapter.notifyDataSetChanged(); } }
这里主要的是对id的计算,添加了一个int a来过渡,将mainlist的postion乘以100,然后加上morelist的postion得到的值认为是这个所点击的item的id,并将这个id传递下去。这样每一个item也就有了对应的值id。并且还可以将这个item的名字传递下去。
这里我的数组是写在arrays.xml里的:
arrays.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="main"> <item>0</item> <item>1</item> <item>2</item> <item>3</item> <item>4</item> <item>5</item> <item>6</item> <item>7</item> <item>8</item> <item>9</item> <item>10</item> <item>11</item> <item>12</item> <item>13</item> <item>14</item> <item>15</item> </string-array> <string-array name="more_0"> <item>000</item> <item>001</item> <item>002</item> <item>003</item> <item>004</item> <item>005</item> <item>006</item> <item>007</item> <item>008</item> <item>009</item> <item>010</item> <item>011</item> <item>012</item> <item>013</item> <item>014</item> <item>015</item> </string-array> <string-array name="more_1"> <item>100</item> <item>101</item> <item>102</item> <item>103</item> <item>104</item> <item>105</item> <item>106</item> <item>107</item> <item>108</item> <item>109</item> <item>110</item> <item>111</item> <item>112</item> <item>113</item> <item>114</item> <item>115</item> </string-array> <string-array name="more_2"> <item>200</item> <item>201</item> <item>202</item> <item>203</item> <item>204</item> <item>205</item> <item>206</item> <item>207</item> <item>208</item> <item>209</item> <item>210</item> <item>211</item> <item>212</item> <item>213</item> <item>214</item> <item>215</item> </string-array> <string-array name="more_3"> <item>300</item> <item>301</item> <item>302</item> <item>303</item> <item>304</item> <item>305</item> <item>306</item> <item>307</item> <item>308</item> <item>309</item> <item>310</item> <item>311</item> <item>312</item> <item>313</item> <item>314</item> <item>315</item> </string-array> <string-array name="more_4"> <item>400</item> <item>401</item> <item>402</item> <item>403</item> <item>404</item> <item>405</item> <item>406</item> <item>407</item> <item>408</item> <item>409</item> <item>410</item> <item>411</item> <item>412</item> <item>413</item> <item>414</item> <item>415</item> </string-array> <string-array name="more_5"> <item>500</item> <item>501</item> <item>502</item> <item>503</item> <item>504</item> <item>505</item> <item>506</item> <item>507</item> <item>508</item> <item>509</item> <item>510</item> <item>511</item> <item>512</item> <item>513</item> <item>514</item> <item>515</item> </string-array> <string-array name="more_6"> <item>600</item> <item>601</item> <item>602</item> <item>603</item> <item>604</item> <item>605</item> <item>606</item> <item>607</item> <item>608</item> <item>609</item> <item>610</item> <item>611</item> <item>612</item> <item>613</item> <item>614</item> <item>615</item> </string-array> <string-array name="more_7"> <item>700</item> <item>701</item> <item>702</item> <item>703</item> <item>704</item> <item>705</item> <item>706</item> <item>707</item> <item>708</item> <item>709</item> <item>710</item> <item>711</item> <item>712</item> <item>713</item> <item>714</item> <item>715</item> </string-array> <string-array name="more_8"> <item>800</item> <item>801</item> <item>802</item> <item>803</item> <item>804</item> <item>805</item> <item>806</item> <item>807</item> <item>808</item> <item>809</item> <item>810</item> <item>811</item> <item>812</item> <item>813</item> <item>814</item> <item>815</item> </string-array> <string-array name="more_9"> <item>900</item> <item>901</item> <item>902</item> <item>903</item> <item>904</item> <item>905</item> <item>906</item> <item>907</item> <item>908</item> <item>909</item> <item>910</item> <item>911</item> <item>912</item> <item>913</item> <item>914</item> <item>915</item> </string-array> <string-array name="more_10"> <item>1000</item> <item>1001</item> <item>1002</item> <item>1003</item> <item>1004</item> <item>1005</item> <item>1006</item> <item>1007</item> <item>1008</item> <item>1009</item> <item>1010</item> <item>1011</item> <item>1012</item> <item>1013</item> <item>1014</item> <item>1015</item> </string-array> <string-array name="more_11"> <item>1100</item> <item>1101</item> <item>1102</item> <item>1103</item> <item>1104</item> <item>1105</item> <item>1106</item> <item>1107</item> <item>1108</item> <item>1109</item> <item>1110</item> <item>1111</item> <item>1112</item> <item>1113</item> <item>1114</item> <item>1115</item> </string-array> <string-array name="more_12"> <item>1200</item> <item>1201</item> <item>1202</item> <item>1203</item> <item>1204</item> <item>1205</item> <item>1206</item> <item>1207</item> <item>1208</item> <item>1209</item> <item>1210</item> <item>1211</item> <item>1212</item> <item>1213</item> <item>1214</item> <item>1215</item> </string-array> <string-array name="more_13"> <item>1300</item> <item>1301</item> <item>1302</item> <item>1303</item> <item>1304</item> <item>1305</item> <item>1306</item> <item>1307</item> <item>1308</item> <item>1309</item> <item>1310</item> <item>1311</item> <item>1312</item> <item>1313</item> <item>1314</item> <item>1315</item> </string-array> <string-array name="more_14"> <item>1400</item> <item>1401</item> <item>1402</item> <item>1403</item> <item>1404</item> <item>1405</item> <item>1406</item> <item>1407</item> <item>1408</item> <item>1409</item> <item>1410</item> <item>1411</item> <item>1412</item> <item>1413</item> <item>1414</item> <item>115</item> </string-array> <string-array name="more_15"> <item>1500</item> <item>1501</item> <item>1502</item> <item>1503</item> <item>1504</item> <item>1505</item> <item>1506</item> <item>1507</item> <item>1508</item> <item>1509</item> <item>1510</item> <item>1511</item> <item>1512</item> <item>1513</item> <item>1514</item> <item>1515</item> </string-array> </resources>
最后的显示界面就不说了,就是两个TextView。
代码很简单,但是这个二级菜单还比较实用,用处还比较多。希望能有帮助。
下面是源码
demo下载地址:http://download.csdn.net/detail/jiang89125/9288249
转载请注明出处:http://blog.csdn.net/jiang89125/article/details/49963725
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories