1. 程式人生 > >ExpandListview應用(實現二級列表和實現新聞分類)

ExpandListview應用(實現二級列表和實現新聞分類)

ExpandListView在我們開發中使用非常常見,但原生的ExpandListView往往會達不到我們使用的效果,我們會以兩個例子為例來理解ExpandListView,現在我們看下如何做呢?

實現二級列表

首先我們看下效果圖:


我們看下佈局檔案:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/back"
    android:orientation="vertical" >

    

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="44dp" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="1px"
            android:gravity="center"
            android:text="@string/message"
            android:textColor="#DAC310"
            android:textSize="20dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ExpandableListView
            android:id="@+id/list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:childDivider="@color/item_line_color"
            android:divider="@null"
            android:dividerHeight="1px"
            android:gravity="center"
            android:listSelector="#00000000"
            android:scrollbars="none" >
        </ExpandableListView>

    </LinearLayout>

</LinearLayout>

我們還需要做一下的準備child_layout.xml;child_s_layout.xml;group_layout.xml:

child_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:background="@color/white" >

    <TextView
        android:id="@+id/child_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:textColor="@color/item_text_color"
        android:textSize="20dp" />

    <CheckBox
        style="@style/my_CheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true" />

</RelativeLayout>
child_s_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:background="@drawable/text_item_bottom_bg" >

    <TextView
        android:id="@+id/child_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="15dp"
        android:textColor="@color/item_text_color"
        android:textSize="20dp" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/child_text"
        android:gravity="center_horizontal"
        android:orientation="horizontal"
        android:padding="10dp" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/btn_nromal_bg"
            android:paddingBottom="10dp"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:paddingTop="10dp"
            android:text="是" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:background="@drawable/btn_pressed_bg"
            android:paddingBottom="10dp"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:textColor="@color/white"
            android:paddingTop="10dp"
            android:text="有時" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:background="@drawable/btn_nromal_bg"
            android:paddingBottom="10dp"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:paddingTop="10dp"
            android:text="經常" />
    </LinearLayout>

</RelativeLayout>
group_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <View
        android:layout_width="fill_parent"
        android:layout_height="10dp"
        android:background="#00000000" />

    <RelativeLayout
        android:id="@+id/group_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/text_item_bg"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" >

        <TextView
            android:id="@+id/group_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerInParent="true"
            android:layout_marginLeft="10dp"
            android:textColor="@color/head_text_color"
            android:textSize="20dp" />

        <ImageView
            android:id="@+id/group_state"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerInParent="true"
            android:layout_marginRight="10dp" />
    </RelativeLayout>

</LinearLayout>

下面我們看下activity如何寫:
package com.adth.eagleeducation.ui;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.adth.eagleeducation.adapter.Today_activity_adapter;
import com.adth.eagleeducation.adapter.Today_course_Adapter;
import com.adth.eagleeducation.bean.Activityinformation;
import com.adth.eagleeducation.bean.Course;

public class DailyEventActivity extends Activity {

	private ListView lv_daily_course;
	private List<Course> list = new ArrayList<Course>();
	private Course course;
	private Today_course_Adapter adapter;

	private ImageView btn_title_bar_without_cancel;
	private TextView tv_title_bar_without_name;

	private ListView lv_daily_event;
	private List<Activityinformation> lv_activity = new ArrayList<Activityinformation>();
	private Activityinformation actinfor;
	private Today_activity_adapter adapter_activity;
	private String date;
	private TextView tv_daily_event_add;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
		setContentView(R.layout.fragment_daily_event);
		
		date = this.getIntent().getStringExtra("date");
		init();
	}
	

	public void init(){
		btn_title_bar_without_cancel = (ImageView) findViewById(R.id.btn_title_bar_without_cancel);
		btn_title_bar_without_cancel.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				DailyEventActivity.this.finish();
			}
		});

		tv_title_bar_without_name = (TextView) findViewById(R.id.tv_title_bar_without_name);
		if(date != null){
			tv_title_bar_without_name.setText(date);
		}else{
			tv_title_bar_without_name.setText("");
		}

		this.lv_daily_course = (ListView) this.findViewById(R.id.lv_daily_course);
		course = new Course("1", "KeyStone", "Room 301", "9:00-9:40", "K11", "35");
		list.add(course);
		course = new Course("2", "Early starter", "Room 302", "10:00-10:40", "IN1A", "40");
		list.add(course);
		course = new Course("3", "Intensive", "Room 303", "2:00-2:40", "ST1A", "36");
		list.add(course);
		course = new Course("4", "Standard", "Room 304", "3:00-3:40", "ESA1", "37");
		list.add(course);
		adapter = new Today_course_Adapter(DailyEventActivity.this, list);
		lv_daily_course.setAdapter(adapter);
		//list of activity 
		lv_daily_event = (ListView) findViewById(R.id.lv_daily_event);
		actinfor = new Activityinformation("1", "go to Nanjing School to study", "10:00-11:30");
		lv_activity.add(actinfor);
		adapter_activity = new Today_activity_adapter(this, lv_activity);
		lv_daily_event.setAdapter(adapter_activity);
		
		tv_daily_event_add = (TextView) findViewById(R.id.tv_daily_event_add);
		tv_daily_event_add.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Toast.makeText(DailyEventActivity.this, "new event", 1).show();
			}
		});
	}

}


實現新聞分類

我們看下效果圖:


這裡的佈局檔案是這樣的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ExpandableListView
        android:id="@+id/expandableListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/channel_expandablelistview_bg"
        android:cacheColorHint="#00000000"
        android:divider="#ebebeb"
        android:dividerHeight="1dp"
        android:footerDividersEnabled="false"
        android:groupIndicator="@null" >
    </ExpandableListView>

</RelativeLayout>

我們自定義一個ExpandableListViewAdapter.java:
package com.ziaho.ui;

import java.util.ArrayList;
import java.util.HashMap;

import com.cn.main.R;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseExpandableListAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class ExpandableListViewAdapter extends BaseExpandableListAdapter {
	public String[] group = { "常用", "搞笑", "原創", "資訊", "體育", "遊戲", "汽車", "娛樂" };
	public String[][] gridViewChild = {
			{ "明星八卦", "雷人囧事", "網路紅人", "科技資訊", "美女花邊", "遊戲達人", "美女車模", "瘋狂惡搞" },
			{ "瘋狂惡搞", "搞笑綜藝", "原創搞笑", "爆笑寵物", "雷人囧事" },
			{ "原創熱點", "原創影視", "音樂動畫", "火星搞笑", "校園作品", "網路紅人", "拍客" },
			{ "社會資訊", "國內資訊", "國際資訊", "財富資訊", "科技資訊" },
			{ "籃球天地", "足球世界", "綜合體育", "極限運動", "武術摔角", "美女花邊" },
			{ "網路遊戲", "電子競技", "單機電玩", "遊戲達人", "工會戰隊" },
			{ "新車速遞", "車型推薦", "改裝酷玩", "汽車廣告", "評測報告", "美女車模" },
			{ "明星八卦", "影視資訊" } };
	String[][] child = { { "" }, { "" }, { "" }, { "" }, { "" }, { "" },
			{ "" }, { "" } };
	LayoutInflater mInflater;
	Context context;

	public ExpandableListViewAdapter(Context context) {
		// TODO Auto-generated constructor stub
		mInflater = LayoutInflater.from(context);
		this.context = context;
	}

	@Override
	public Object getChild(int groupPosition, int childPosition) {
		// TODO Auto-generated method stub
		return child[groupPosition][childPosition];
	}

	@Override
	public long getChildId(int groupPosition, int childPosition) {
		// TODO Auto-generated method stub
		return childPosition;
	}

	@Override
	public View getChildView(int groupPosition, int childPosition,
			boolean isLastChild, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		if (convertView == null) {
			mViewChild = new ViewChild();
			convertView = mInflater.inflate(
					R.layout.channel_expandablelistview_item, null);
			mViewChild.gridView = (GridView) convertView
					.findViewById(R.id.channel_item_child_gridView);
			convertView.setTag(mViewChild);
		} else {
			mViewChild = (ViewChild) convertView.getTag();
		}

		SimpleAdapter mSimpleAdapter = new SimpleAdapter(context,
				setGridViewData(gridViewChild[groupPosition]),
				R.layout.channel_gridview_item,
				new String[] { "channel_gridview_item" },
				new int[] { R.id.channel_gridview_item });
		mViewChild.gridView.setAdapter(mSimpleAdapter);
		setGridViewListener(mViewChild.gridView);
		mViewChild.gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
		return convertView;
	}

	/**
	 * 設定gridview點選事件監聽
	 * 
	 * @param gridView
	 */
	private void setGridViewListener(final GridView gridView) {
		gridView.setOnItemClickListener(new GridView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				if (view instanceof TextView) {
					// 如果想要獲取到哪一行,則自定義gridview的adapter,item設定2個textview一個隱藏設定id,顯示哪一行
					TextView tv = (TextView) view;
					Toast.makeText(context,
							"position=" + position + "||" + tv.getText(),
							Toast.LENGTH_SHORT).show();
					Log.e("hefeng", "gridView listaner position=" + position
							+ "||text=" + tv.getText());
				}
			}
		});
	}

	/**
	 * 設定gridview資料
	 * 
	 * @param data
	 * @return
	 */
	private ArrayList<HashMap<String, Object>> setGridViewData(String[] data) {
		ArrayList<HashMap<String, Object>> gridItem = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < data.length; i++) {
			HashMap<String, Object> hashMap = new HashMap<String, Object>();
			hashMap.put("channel_gridview_item", data[i]);
			gridItem.add(hashMap);
		}
		return gridItem;
	}

	@Override
	public int getChildrenCount(int groupPosition) {
		// TODO Auto-generated method stub
		return child[groupPosition].length;
	}

	@Override
	public Object getGroup(int groupPosition) {
		// TODO Auto-generated method stub
		return group[groupPosition];
	}

	@Override
	public int getGroupCount() {
		// TODO Auto-generated method stub
		return group.length;
	}

	@Override
	public long getGroupId(int groupPosition) {
		// TODO Auto-generated method stub
		return groupPosition;
	}

	@Override
	public View getGroupView(int groupPosition, boolean isExpanded,
			View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		if (convertView == null) {
			mViewChild = new ViewChild();
			convertView = mInflater.inflate(
					R.layout.channel_expandablelistview, null);
			mViewChild.textView = (TextView) convertView
					.findViewById(R.id.channel_group_name);
			mViewChild.imageView = (ImageView) convertView
					.findViewById(R.id.channel_imageview_orientation);
			convertView.setTag(mViewChild);
		} else {
			mViewChild = (ViewChild) convertView.getTag();
		}

		if (isExpanded) {
			mViewChild.imageView
					.setImageResource(R.drawable.channel_expandablelistview_top_icon);
		} else {
			mViewChild.imageView
					.setImageResource(R.drawable.channel_expandablelistview_bottom_icon);
		}
		mViewChild.textView.setText(getGroup(groupPosition).toString());
		return convertView;
	}

	@Override
	public boolean hasStableIds() {
		// TODO Auto-generated method stub
		return true;
	}

	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		// TODO Auto-generated method stub
		return true;
	}

	ViewChild mViewChild;

	static class ViewChild {
		ImageView imageView;
		TextView textView;
		GridView gridView;
	}
}

channel_expandablelistview_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<com.ziaho.ui.CustomGridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/channel_item_child_gridView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f0f0f0"
    android:numColumns="4" >

</com.ziaho.ui.CustomGridView>

CustomGridView.java:
package com.ziaho.ui;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;


public class CustomGridView extends GridView {

	public CustomGridView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		// TODO Auto-generated method stub
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
				MeasureSpec.AT_MOST);
		super.onMeasure(widthMeasureSpec, expandSpec);
	}
}

channel_expandablelistview.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff"
    android:orientation="horizontal"
    android:padding="10dip" >

    <View
        android:id="@+id/channel_line"
        android:layout_width="3dp"
        android:layout_height="15dp"
        android:layout_marginLeft="5dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:background="#79BEF7" />

    <TextView
        android:id="@+id/channel_group_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_gravity="center"
        android:layout_marginLeft="5dp"
        android:layout_toRightOf="@id/channel_line"
        android:text="體育"
        android:textColor="#8e8e8e"
        android:textSize="18sp" />

    <ImageView
        android:id="@+id/channel_imageview_orientation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp"
        android:src="@drawable/channel_expandablelistview_bottom_icon" />

</RelativeLayout>
channel_gridview_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/channel_gridview_item"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#f0f0f0"
    android:paddingBottom="8dip"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"
    android:paddingTop="8dip"
    android:text="籃球天地"
    android:textColor="@color/channel_gridview_item_click"
    android:textSize="15sp" />
最後我們來看MainActivity:
package com.ziaho.ui;

import com.cn.main.R;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ExpandableListView;


public class MainActivity extends Activity {
	ExpandableListView mExpandableListView;
	ExpandableListViewAdapter mExpandableListViewAdapter;
	private static final String TAG = "Main";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mExpandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
		mExpandableListViewAdapter = new ExpandableListViewAdapter(this);
		mExpandableListView.setAdapter(mExpandableListViewAdapter);
		mExpandableListView.expandGroup(0);
		mExpandableListView
				.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
					@Override
					public boolean onGroupClick(ExpandableListView parent,
							View v, int groupPosition, long id) {
						return false;
					}
				});
		mExpandableListView
				.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
					@Override
					public boolean onChildClick(ExpandableListView parent,
							View v, int groupPosition, int childPosition,
							long id) {
						Log.e(TAG, "groupPosition=" + groupPosition
								+ ",childPosition=" + childPosition);
						return false;
					}
				});

	}

}


好了!希望對你們有幫助。

如下為下載連結:

相關推薦

ExpandListview應用實現二級列表實現新聞分類

ExpandListView在我們開發中使用非常常見,但原生的ExpandListView往往會達不到我們使用的效果,我們會以兩個例子為例來理解ExpandListView,現在我們看下如何做呢? 實現二級列表 首先我們看下效果圖: 我們看下佈局檔案: <?xm

佇列類分別用列表連結串列實現

#!/usr/bin/python3 class QueueUnderflow(ValueError):     pass class ListQueue():  #列表實現迴圈佇列類     def __init__(self, len_

棧類分別用列表連結串列實現

#!/usr/bin/python3 class StackUnderflow(ValueError):     pass class ListStack():     def __init__(self):      

Kotlin實戰案例:帶你實現RecyclerView分頁查詢功能仿照主流電商APP,可切換列表網格效果

隨著Kotlin的推廣,一些國內公司的安卓專案開發,已經從Java完全切成Kotlin了。雖然Kotlin在各類程式語言中的排名比較靠後(據TIOBE釋出了 19 年 8 月份的程式語言排行榜,Kotlin竟然排名45位),但是作為安卓開發者,掌握該語言,卻已是大勢所趨了。 Kotlin的基礎用法,整

ExpandableListView控件實現二級列表

XP 基本 @override 適配 extc height encoding 是否 [] 效果圖如下: 二級列表附有點擊事件。 1、布局文件: 此處加了一個自定義的導航RelativeLayout,記得註activity的時候添加 android:theme="@s

FTP主動模式被動模式在VRP上實現實驗、報文理論解析

理解 客戶 warning 簡述 查看 inf 要求 sep mac 嗯~點關註不迷路 1.簡述主動模式的FTP建立連接的主要步驟 圖1-19 FTP主動模式示意圖基本原理FTP(文件傳輸協議)的特殊性: 大多數的TCP服務是使用單個的連接,一般是客戶向服務器的一個周知端口

java中代理,靜態代理,動態代理以及spring aop代理方式,實現原理統一彙總 Spring中AOP的兩種代理方式Java動態代理CGLIB代理

若代理類在程式執行前就已經存在,那麼這種代理方式被成為 靜態代理 ,這種情況下的代理類通常都是我們在Java程式碼中定義的。 通常情況下, 靜態代理中的代理類和委託類會實現同一介面或是派生自相同的父類。 一、概述1. 什麼是代理我們大家都知道微商代理,簡單地說就是代替廠家賣商品,廠家“委託”代理為

IntelliJ IDEA實現遠端連線linux,並上傳檔案到linux伺服器SSH會話功能SFTP功能

注意: eclipse的SSH會話功能和SFTP功能這裡不會說 點選以下連結可檢視   eclipse的SSH會話功能和SFTP功能 而IntelliJ IDEA(以下簡稱為IDEA)這麼強大的開發工具自然也有該功能,這篇部落格就介紹一下IDEA的SSH會話功能

Poisson BlendingSeamless clone)研究實現;泊松融合

Poisson Blending 實現了非常棒的效果,可以看 《自己動手,實現“你的名字”濾鏡》 http://www.cnblogs.com/jsxyhelu/p/7216795.html 它的原理在論文《Poisson Image Editing》中進行了比較詳細的闡述,但是英文的

Netty+Android搭建一個簡易聊天室實現群聊私聊

零,前言 JRBM專案中無論是好友私聊,公開聊天室,還是比賽平臺都需要用到長連線,之前沒有接觸過網路通訊等知識,更別說框架了,因此直接上手netty確實有些困難,在前期主要是在b站上看(https://www.bilibili.com/video/av26415011)這個

ExpandableListView簡單實現二級列表

xml建立一個 ExpandableListView <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.

七、Sketchup用ruby進行二次開發--利用Transformation實現Move工具平移、旋轉縮放

 在Sketchup中,move工具使用的非常廣泛,,可以移動、拉伸和複製幾何體,也可以用來旋轉元件。舉一個簡單地例子。 我們要做一個建築物的尖頂,如下圖所示,就是使用move工具實現的。                   接下來我們就要學習如何使用ruby實現這樣的功能

用pytorch實現GAN——mnist含有全部註釋網路思想

#coding=utf-8 import torch.autograd import torch.nn as nn from torch.autograd import Variable from torchvision import transforms from torchvision impo

實現二級列表雙listview省市選擇

實現的效果圖如下 其中 難點在於 xml 的解析,以及兩個listview 的互動 解析xml public class XmlParserHandler extends DefaultHand

二叉樹遍歷演算法遞迴實現先序中序後續遍歷非遞迴實現中序先續

二叉樹遍歷 這兩天抓緊把二叉樹遍歷複習了一遍,遞迴實現還是一如既往地簡潔,迭代版本寫了好久還是隻實現了先序和中序,後續一直沒搞明白,有空了再更新。 遞迴實現 void RecursionBackTree(TreeNode * root) {

關於redis中使用鎖機制, 實現分散式鎖任務佇列

場景:       電商網站上有很多秒殺活動,會迎來一個使用者請求的高峰期,可能會有幾十萬幾百萬的併發量,來搶這個手機,在高併發的情形下會對資料庫伺服器或者是檔案伺服器應用伺服器造成巨大的壓力,嚴重時說不定就宕機了;       另一個問題是,秒殺的東西都是有量的,一款手

Android自動化之adb模擬操作實現按鍵精靈手機輸入法

最近因為工作需要,需要實現某一應用自動操作android手機的業務場景。網上查了下,發現按鍵精靈早就有了Android版本,於是研究了下它。 我們知道,手機連線電腦,在電腦上輸入adb命令是可以實現安裝應用、解除安裝應用、monkey等事件的,甚至可以指定點選

工廠模式自己的理解實現

最近學習了工廠模式,看了網上的教程,也學習了別人的程式碼,最後自己按照自己的想法實現了一下。 如果想要看我自己實現的原始碼的,去這個網址下載。支援下小弟工作和學習熱情,辛苦整理實現的,收取1分哈~~~大家別拍磚~~~。順帶說一下怎麼能快速的獲取積分來下載,你可以經常上傳

2d旋轉css3實現過度效果動畫效果

nim alt orm css3 ati text gif idt 分享圖片 效果:    源碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-

【JavaScript小專案】正則表示式實現使用者註冊輸入資訊驗證包含彈窗innerHTML驗證

本博主要是運用正則表示式,登陸介面進行出生日期選擇,用到年月日的三級聯動,第一種驗證方式用到的innerHTML的的動態驗證輸入資訊,第二種驗證方式利用陣列彈窗驗證。效果:圖1.1圖1.2圖1.3圖1.4程式碼:登入頁面的login.html的,主要是年月日三級聯動 <