我的Android进阶之旅------Android二级ListView列表的实现
生活随笔
收集整理的這篇文章主要介紹了
我的Android进阶之旅------Android二级ListView列表的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實現如下圖所示的二級列表效果
首先是在布局文件中,布局兩個ListView,代碼如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal" ><ListViewandroid:id="@+id/listView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:background="#e4e3de"android:choiceMode="singleChoice"android:divider="@drawable/listitem_divide"android:listSelector="#00000000"android:scrollbars="none" ></ListView><ListViewandroid:id="@+id/subListView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:layout_weight="1"android:background="#e4e3de"android:divider="@drawable/listitem_divide" ></ListView> </LinearLayout>接著給兩個ListView分別寫適配器,父類ListView適配器為MyListAdapter,子類ListView適配器為MySubListAdapter,代碼如下:
/src/com/oyp/multilistview/MyListAdapter.java
package com.oyp.multilistview;import android.content.Context; import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.TextView;public class MyListAdapter extends BaseAdapter {Context context;LayoutInflater inflater;String[] categories;int last_item;private int selectedPosition = -1;public MyListAdapter(Context context, String[] categories) {this.context = context;this.categories = categories;inflater = LayoutInflater.from(context);}@Overridepublic int getCount() {return categories.length;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {convertView = inflater.inflate(R.layout.mylist_item, null);holder = new ViewHolder();holder.textView = (TextView) convertView.findViewById(R.id.textView);holder.layout = (LinearLayout) convertView.findViewById(R.id.colorlayout);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}if (selectedPosition == position) {holder.textView.setTextColor(Color.WHITE);holder.layout.setBackgroundColor(Color.TRANSPARENT);} else {holder.textView.setTextColor(Color.BLUE);holder.layout.setBackgroundColor(Color.LTGRAY);}holder.textView.setText(categories[position]);holder.textView.setTextColor(Color.BLACK);return convertView;}public static class ViewHolder {public TextView textView;public LinearLayout layout;}public void setSelectedPosition(int position) {selectedPosition = position;}}
對應的item布局文件為:/res/layout/mylist_item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/colorlayout"android:layout_width="fill_parent"android:layout_height="fill_parent" ><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="8dip"android:layout_marginLeft="8dip"android:layout_marginTop="8dip"android:textSize="16dip" /> </LinearLayout>
/src/com/oyp/multilistview/MySubListAdapter.java
package com.oyp.multilistview;import android.content.Context; import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView;public class MySubListAdapter extends BaseAdapter {Context context;LayoutInflater layoutInflater;String[][] sub_categories;public int categoryPoition;public MySubListAdapter(Context context, String[][] sub_categories, int position) {this.context = context;this.sub_categories = sub_categories;layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);this.categoryPoition = position;}@Overridepublic int getCount() {return sub_categories.length;}@Overridepublic Object getItem(int position) {return getItem(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;if (convertView == null) {convertView = layoutInflater.inflate(R.layout.mysublist_item, null);viewHolder = new ViewHolder();viewHolder.textView = (TextView) convertView.findViewById(R.id.subTextView);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.textView.setText(sub_categories[categoryPoition][position]);viewHolder.textView.setTextColor(Color.BLACK);return convertView;}public static class ViewHolder {public TextView textView;}}
對應的item布局文件為:/res/layout/mysublist_item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/subTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="8dip"android:layout_marginLeft="8dip"android:layout_marginTop="8dip"android:textSize="16dip" /> </LinearLayout>
最后是Activity的實現,代碼如下:
/src/com/oyp/multilistview/MainActivity.java
package com.oyp.multilistview;import android.os.Bundle; import android.app.Activity; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener;public class MainActivity extends Activity {private ListView listView;private ListView subListView;private MyListAdapter myAdapter;private MySubListAdapter subAdapter;String sub_categories[][] = new String[][] {new String[] { "全部美食", "本幫江浙菜", "川菜", "粵菜", "湘菜", "東北菜", "臺灣菜","新疆/清真", "素菜", "火鍋", "自助餐", "小吃快餐", "日本", "韓國料理", "東南亞菜","西餐", "面包甜點", "其他" },new String[] { "全部休閑娛樂", "咖啡廳", "酒吧", "茶館", "KTV", "電影院", "游樂游藝","公園", "景點/郊游", "洗浴", "足浴按摩", "文化藝術", "DIY手工坊", "桌球館","桌面游戲", "更多休閑娛樂" },new String[] { "全部購物", "綜合商場", "服飾鞋包", "運動戶外", "珠寶飾品", "化妝品","數碼家電", "親子購物", "家居建材", "書店", "書店", "眼鏡店", "特色集市","更多購物場所", "食品茶酒", "超市/便利店", "藥店" },new String[] { "全部酒店", "經濟型酒店", "豪華酒店", "度假酒店", "公寓式酒店","客棧/青旅/民宿", "主題精品酒店", " 溫泉酒店", "親子酒店" },new String[] { "全部麗人", "美發", "美容/SPA", "美甲", "瘦身纖體", "個性寫真","瑜伽/舞蹈", "其他" },new String[] { "全部親子", "親子游樂", "親子攝影", "幼兒教育", "主題公園/游樂場","展覽/演出/賽事", "景點郊游", "DIY手工", "農家樂" },new String[] { "全部生活", "商場購物劵", "汽車服務", "鮮花婚慶", "體檢保健", "寵物服務","家政服務", "照片沖印", "配眼鏡" },};String categories[] = new String[] { "美食", "休閑娛樂", "購物", "酒店", "麗人", "親子","生活服務" };@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) findViewById(R.id.listView);subListView = (ListView) findViewById(R.id.subListView);myAdapter = new MyListAdapter(getApplicationContext(), categories);listView.setAdapter(myAdapter);setSubList(0);listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) {setSubList(position);}});}public void setSubList(int position) {final int location = position;myAdapter.setSelectedPosition(position);myAdapter.notifyDataSetInvalidated();subAdapter = new MySubListAdapter(getApplicationContext(), sub_categories,position);subListView.setAdapter(subAdapter);subListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) {// TODO Auto-generated method stubToast.makeText(getApplicationContext(),sub_categories[location][position], Toast.LENGTH_SHORT).show();}});} }
? ?? ? ? ?
? ?? ? ? ?
??????????????????????????? ====================================================================================
? 作者:歐陽鵬? 歡迎轉載,與人分享是進步的源泉!
? 轉載請保留原文地址:http://blog.csdn.net/ouyang_peng
====================================================================================
轉載于:https://www.cnblogs.com/ouyangpeng/p/8537991.html
總結
以上是生活随笔為你收集整理的我的Android进阶之旅------Android二级ListView列表的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python GUI漫谈
- 下一篇: DIV周边添加投影及背景固定