`

ListView的增删改查(实战)

阅读更多

这是对ListView的增删改查相关操作的具体运用。

 

 

package com.jxust.day05_09_listviewdemo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

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

import com.jxust.day05_09_entity.GeneralBean;

public class MainActivity extends Activity {

	ListView mlvGeneral;
	List<GeneralBean> mGenerals;
	GeneralAdapter mGeneralAdapter;
	GeneralBean general;

	private static final int ACTION_DETAILS = 0;
	private static final int ACTION_ADD = 1;
	private static final int ACTION_UPDATE = 2;
	private static final int ACTION_DELETE = 3;

	int mPosition;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initData();
		initView();
		setListener(); // 设置监听器
	}

	private void setListener() {
		setOnItemLongClickListener();
	}

	private void setOnItemLongClickListener() {
		mlvGeneral.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
				AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
				builder.setTitle("选择以下操作").setItems(new String[] { "查看详情", "添加数据", "修改数据", "删除数据" },
						new DialogInterface.OnClickListener() {

							@Override
							public void onClick(DialogInterface dialog, int which) {
								switch (which) {
								case ACTION_DETAILS:
									showDetails(position);
									break;
								case ACTION_ADD:
									// 从MainActivity跳到AddActivity中
									Intent intent = new Intent(MainActivity.this,AddActivity.class);
									startActivityForResult(intent, ACTION_ADD); // 将处理结果返回到requestCode中去
									break;
								case ACTION_UPDATE:
									// 启动修改的Activity,并将当前的军事家对象传递过去
									// MainActivity.this表示的启动方,UpdateActivity.this表示的是被启动方
									intent = new Intent(MainActivity.this, UpdateActivity.class);
									intent.putExtra("general", mGenerals.get(position));
									mPosition = position;		// 给update()操作提供地址的信息
									startActivityForResult(intent, ACTION_UPDATE); // 将处理结果返回到requestCode中去
									break;
								case ACTION_DELETE:
									mGeneralAdapter.remove(position);
									break;
								}
							}

							private void showDetails(int position) {
								GeneralBean general = mGenerals.get(position);
								AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
								builder.setTitle(general.getName())
										.setMessage(general.getDetails())
										.setPositiveButton("返回", null);
								AlertDialog dialog = builder.create();
								dialog.show();
							}
						});
				AlertDialog dialog = builder.show();
				dialog.show();
				return true;
			}
		});
	}

	private void initView() {
		mlvGeneral = (ListView) findViewById(R.id.lvGeneral);
		mGeneralAdapter = new GeneralAdapter(mGenerals, this);
		mlvGeneral.setAdapter(mGeneralAdapter);
	}

	private void initData() {
		String[] names = getResources().getStringArray(R.array.general);
		String[] details = getResources().getStringArray(R.array.details);
		int[] resid = { R.drawable.baiqi, R.drawable.caocao, R.drawable.chengjisihan, R.drawable.hanxin,
				R.drawable.lishimin, R.drawable.nuerhachi, R.drawable.sunbin, R.drawable.sunwu, R.drawable.yuefei,
				R.drawable.zhuyuanzhang };
		mGenerals = new ArrayList<GeneralBean>();
		for (int i = 0; i < resid.length; i++) {
			GeneralBean general = new GeneralBean(resid[i], names[i], details[i]);
			mGenerals.add(general);
		}
	}

	class GeneralAdapter extends BaseAdapter {
		List<GeneralBean> generals;
		MainActivity context;

		public GeneralAdapter(List<GeneralBean> generals, MainActivity context) {
			super();
			this.generals = generals;
			this.context = context;
		}


		// 从列表项中移除掉一个
		public void remove(int position) {
			generals.remove(position);
			notifyDataSetChanged(); 	// 这个的效果就是让安卓系统重新调用适配器中的getView方法,从而实现对页面的更新
		}


		public void add(GeneralBean general) {
			mGenerals.add(general);
			notifyDataSetChanged();
		}

		public void update(int position, GeneralBean general) {
			mGenerals.set(position, general);
			notifyDataSetChanged();
		}


		// 获得列表项的个数
		@Override
		public int getCount() {

			return generals.size();
		}

		@Override
		public Object getItem(int position) {
			return null;
		}

		@Override
		public long getItemId(int position) {
			return 0;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder holder = null;
			if (convertView == null) {
				convertView = View.inflate(context, R.layout.item_general, null); // 通过View.inflate来解析我们的布局
				holder = new ViewHolder();
				holder.ivThumb = (ImageView) convertView.findViewById(R.id.ivThumb);
				holder.tvName = (TextView) convertView.findViewById(R.id.tvName);
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}
			GeneralBean general = generals.get(position);
			holder.ivThumb.setImageResource(general.getResid());
			holder.tvName.setText(general.getName());
			return convertView;
		}

		class ViewHolder {
			ImageView ivThumb;
			TextView tvName;
		}
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if (resultCode != RESULT_OK) {	
			return;
		}
		switch (requestCode) {
		case ACTION_UPDATE:
			//	data表示的是从UpdateActivity传过来的数据
			general = (GeneralBean) data.getSerializableExtra("general");
			mGeneralAdapter.update(mPosition, general);
			break;
		case ACTION_ADD:
			// data表示的是从AddActivity传过来的Intent数据
			general = (GeneralBean) data.getSerializableExtra("general");
			mGeneralAdapter.add(general);
			break;
		}
	}
}

 

 

 

 

package com.jxust.day05_09_listviewdemo;

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

import com.jxust.day05_09_entity.GeneralBean;
import com.jxust.day05_09_listviewdemo.R.id;
import com.jxust.day05_09_listviewdemo.R.layout;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;

public class UpdateActivity extends Activity {

	EditText metName, metDetail;
	ImageView mivThumb;
	Gallery mGallery;
	IconAdapter mIconAdapter;
	List<GeneralBean> mGenerals;

	int mPhotoId;
	
	int[] resid = { R.drawable.baiqi, R.drawable.caocao, R.drawable.chengjisihan, R.drawable.hanxin,
			R.drawable.lishimin, R.drawable.nuerhachi, R.drawable.sunbin, R.drawable.sunwu, R.drawable.yuefei,
			R.drawable.zhuyuanzhang };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_update);
		initData();
		initView();
		setListener();
	}

	private void setListener() {
		setIconOnItemLongClickListener();
		setIconOnItemClickListener();
		setOKOnClickListener();
		setCancelOnClickListener();
	}

	private void setCancelOnClickListener() {
		findViewById(R.id.btnCancel).setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				finish();
			}
		});
	}

	private void setOKOnClickListener() {
		findViewById(R.id.btnOK).setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				String details = metDetail.getText().toString();
				String name = metName.getText().toString();
				//  更换图片效果,使用Gallery,如果修改了就使用修改后的图片,如果没有修改就使用原有的图片
				GeneralBean general = new GeneralBean(mPhotoId, name, details);
				Intent intent = new Intent(UpdateActivity.this, MainActivity.class); // 返回到MainActivity
				intent.putExtra("general", general);
				setResult(RESULT_OK, intent);
				finish();
			}
		});
	}

	// 对短按图标进行处理
	private void setIconOnItemClickListener() {
			mGallery.setOnItemClickListener(new OnItemClickListener() {

				@Override
				public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
					
//					Toast.makeText(UpdateActivity.this, "短按操作", 2000).show();
					//  将点击的头像处理成为其头像
					//  将修改页面的头像换成用户所选择的头像
					IconAdapter mIconAdapter = new IconAdapter(resid[position]);
					//  让安卓系统重新调用适配器中的getView方法,从而实现对页面的更新
					mIconAdapter.notifyDataSetChanged();
				}
			});
		}

	// 对长按图标进行处理(不处理,交给短按操作的监听器来处理)
	private void setIconOnItemLongClickListener() {
		mGallery.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
				// false的作用就是告诉系统自己没有处理,交给其他监听器,从而就到了短按操作的那个监听器
				// true的作用就是告诉系统自己已经处理了
				return false;
			}
		});
	}

	private void initData() {

		mGenerals = new ArrayList<GeneralBean>();
		for (int i = 0; i < resid.length; i++) {
			GeneralBean bean = new GeneralBean(resid[i], null, null);
			mGenerals.add(bean);
		}
	}

	private void initView() {
		metDetail = (EditText) findViewById(R.id.etDetails);
		metName = (EditText) findViewById(R.id.etName);
		mivThumb = (ImageView) findViewById(R.id.iv_udpate_thumb);

		mGallery = (Gallery) findViewById(R.id.galleryGenerals);
		mIconAdapter = new IconAdapter();
		mGallery.setAdapter(mIconAdapter);

	}

	// 定义头像的适配器类
	class IconAdapter extends BaseAdapter {

		int icon;		//	人物的头像
		
		// 这个对类的多态的作用就是在用户选择头像的时候,可以动态修改人物的头像
		public IconAdapter(int icon) {
			super();
			this.icon = icon;
			mPhotoId = icon;
			mivThumb.setImageResource(icon);
		}

		public IconAdapter() {
			Intent intent = getIntent();
			GeneralBean general = (GeneralBean) intent.getSerializableExtra("general");
			metDetail.setText(general.getDetails());
			metName.setText(general.getName());
			mivThumb.setImageResource(general.getResid());
			mPhotoId = general.getResid(); // 这个的属性的作用就是用于回到MainActivity中去告知头像是什么
		}

		@Override
		public int getCount() {
			return mGenerals.size();
		}

		@Override
		public Object getItem(int position) {
			return mGenerals.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// 拿到 ListView 的布局并且转换为 View 类型的对象
			View layout = View.inflate(UpdateActivity.this, R.layout.item_icon, null);
			// 找到显示军事家头像的ImageView
			ImageView ivIcon = (ImageView) layout.findViewById(R.id.ivIcon);
			// 获取军事家中下标是 position 的军事家对象
			GeneralBean bean = (GeneralBean) getItem(position);
			// 显示军事家的头像
			ivIcon.setImageResource(bean.getResid());
			
			return layout;
		}

	}
}

 

 

 

package com.jxust.day05_09_listviewdemo;

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

import com.jxust.day05_09_entity.GeneralBean;
import com.jxust.day05_09_listviewdemo.UpdateActivity.IconAdapter;

import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageView;

public class AddActivity extends Activity {

	EditText metName, metDetail;
	ImageView mivThumb;
	Gallery mGallery;
	List<GeneralBean> mGenerals;
	IconAdapter iconAdapter;

	int mPhotoId = 0;

	int[] resid = { R.drawable.baiqi, R.drawable.caocao, R.drawable.chengjisihan, R.drawable.hanxin,
			R.drawable.lishimin, R.drawable.nuerhachi, R.drawable.sunbin, R.drawable.sunwu, R.drawable.yuefei,
			R.drawable.zhuyuanzhang };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_add);
		initData();
		initView();
		setListener();
	}

	// 设置监听器
	private void setListener() {
		setIconOnItemClickListener(); // 监听用户对Gallery的头像的短按操作
		setIconOnItemLongClickListener(); // 监听用户对Gallery的头像的长按操作
		setOKOnClickListener(); // 监听用户对"确认添加"按钮的操作
		setCancelOnClickListener(); // 监听用户对"放弃添加“按钮的操作
	}

	private void setIconOnItemLongClickListener() {
		mGallery.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
				// false的作用就是告诉系统自己没有处理,交给其他监听器,从而就交给了监听短按操作的那个监听器
				// true的作用就是告诉系统自己已经处理了
				return false;
			}
		});
	}

	private void setIconOnItemClickListener() {
		mGallery.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				// 将点击的头像处理成为其头像
				// 将修改页面的头像换成用户所选择的头像
				IconAdapter mIconAdapter = new IconAdapter(resid[position]);
				// 让安卓系统重新调用适配器中的getView方法,从而实现对页面的更新
				mIconAdapter.notifyDataSetChanged();
			}
		});
	}

	// 点击按钮"放弃添加"时的监听器
	private void setCancelOnClickListener() {
		findViewById(R.id.btnCancel).setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				finish();
			}
		});
	}

	// 点击按钮"确认添加"时的监听器
	private void setOKOnClickListener() {
		findViewById(R.id.btnOK).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// 把用户在输入框输入的数据放到一个GeneralBean对象中,然后将GeneralBean对象传递到MainActivity
				String details = metDetail.getText().toString();
				String name = metName.getText().toString();
				GeneralBean general = new GeneralBean(mPhotoId,name,details);
				Intent intent = new Intent(AddActivity.this,MainActivity.class);
				intent.putExtra("general", general);
				setResult(RESULT_OK,intent);
				finish();
			}
		});
	}

	// 将Gallery中供用户选择的头像全部放到mGenerals 的 List 集合中
	private void initData() {
		mGenerals = new ArrayList<GeneralBean>();
		for (int i = 0; i < resid.length; i++) {
			GeneralBean general = new GeneralBean(resid[i], null, null);
			mGenerals.add(general);
		}
	}

	private void initView() {
		metName = (EditText) findViewById(R.id.etName);
		metDetail = (EditText) findViewById(R.id.etDetails);
		mivThumb = (ImageView) findViewById(R.id.iv_add_thumb);

		mGallery = (Gallery) findViewById(R.id.galleryGenerals);
		iconAdapter = new IconAdapter();
		mGallery.setAdapter(iconAdapter);
	}

	class IconAdapter extends BaseAdapter {

		int icon;

		public IconAdapter() {

		}

		public IconAdapter(int icon) {
			super();
			this.icon = icon;
			mPhotoId = icon;
			mivThumb.setImageResource(icon);
		}

		@Override
		public int getCount() {

			return mGenerals.size();
		}

		@Override
		public Object getItem(int position) {

			return mGenerals.get(position);
		}

		@Override
		public long getItemId(int position) {

			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View layout = View.inflate(AddActivity.this, R.layout.item_icon, null);
			// 找到显示军事家头像的ImageView
			ImageView ivIcon = (ImageView) layout.findViewById(R.id.ivIcon);
			// 获取军事家中下标是 position 的军事家对象
			GeneralBean bean = (GeneralBean) getItem(position);
			// 显示军事家的头像
			ivIcon.setImageResource(bean.getResid());

			return layout;
		}

	}

}

 

 

 

package com.jxust.day05_09_entity;

import java.io.Serializable;

public class GeneralBean implements Serializable  {

	private int resid; // 图片的id值
	private String name; // 军事家的姓名
	private String details; // 详情介绍

	public int getResid() {
		return resid;
	}

	public void setResid(int resid) {
		this.resid = resid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDetails() {
		return details;
	}

	public void setDetails(String details) {
		this.details = details;
	}

	@Override
	public String toString() {
		return "GeneralBean [resid=" + resid + ", name=" + name + ", details=" + details + "]";
	}

	public GeneralBean(int resid, String name, String details) {
		super();
		this.resid = resid;
		this.name = name;
		this.details = details;
	}

	public GeneralBean() {
	}
}

 

 

 

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

    <ImageButton
        android:id="@+id/iv_add_thumb"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:scaleType="fitXY" />

    <EditText
        android:id="@+id/etName"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/iv_add_thumb" />

    <EditText
        android:id="@+id/etDetails"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_toRightOf="@id/iv_add_thumb" />

    <TextView
        android:id="@+id/tvExplain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/etName"
        android:layout_marginTop="20dp"
        android:text="供选择的图片"
        android:textSize="20sp" />

    <Gallery
        android:id="@+id/galleryGenerals"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tvExplain"
        android:layout_marginTop="10dp"
        android:spacing="2dp" />

    <Button
        android:id="@+id/btnOK"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/galleryGenerals"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="20dp"
        android:text="确认添加" />

    <Button
        android:id="@+id/btnCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/galleryGenerals"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="20dp"
        android:layout_toRightOf="@id/btnOK"
        android:text="放弃添加" />

</RelativeLayout>

 

 

 

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

    <ImageButton
        android:id="@+id/iv_udpate_thumb"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:scaleType="fitXY"
        android:src="@drawable/baiqi" />

    <EditText
        android:id="@+id/etName"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/iv_udpate_thumb"
        android:text="白起" />

    <EditText
        android:id="@+id/etDetails"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_toRightOf="@id/iv_udpate_thumb"
        android:text="@string/detail" />

   
    <TextView
        android:id="@+id/tvExplain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/etName"
        android:layout_marginTop="20dp"
        android:text="供选择的图片"
        android:textSize="20sp" />

    <Gallery
        android:id="@+id/galleryGenerals"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tvExplain"
        android:layout_marginTop="10dp" 
        android:spacing="2dp"
        />

     <Button
        android:id="@+id/btnOK"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/galleryGenerals"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="20dp"
        android:text="确认修改" />
    
    <Button
        android:id="@+id/btnCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/galleryGenerals"
        android:layout_toRightOf="@id/btnOK"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="20dp"
        android:text="放弃修改" />
    
</RelativeLayout>

 

 

 

 

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

    <ListView
        android:id="@+id/lvGeneral"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/ivThumb"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:scaleType="fitXY"
        android:src="@drawable/baiqi" />

    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_marginLeft="10dp"
        android:gravity="center_vertical"
        android:text="白起"
        android:textSize="20sp" />

</LinearLayout>

 

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

    <ImageView
        android:id="@+id/ivIcon"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:scaleType="fitXY"
        android:src="@drawable/baiqi" />

</LinearLayout>

 

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Day05_09_ListViewDemo</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

    <string-array name="general">
        <item>白起</item>
        <item>曹操</item>
        <item>成吉思汗</item>
        <item>韩信</item>
        <item>李世民</item>
        <item>努尔哈赤</item>
        <item>孙膑</item>
        <item>孙武</item>
        <item>岳飞</item>
        <item>朱元璋</item>
    </string-array>
    <string-array name="details">
        <item>白起征战沙场达37年之久,战胜攻取者七十余城,歼敌百万,未尝败绩。史学家司马迁称赞白起“料敌合变,出奇无穷,声震天下。”白起用兵,善于分析敌我形势,然后采取正确的战略方针对敌人发起进攻。如伊阙之战中集中兵力,各个击破;鄢郢之战中的掏心战术,并附以水攻;华阳之战长途奔袭等。白起最突出的军事思想是善于野战进攻,战必求歼,以消灭敌人的有生力量为主,他是战争史上运用围歼战术作战的无与伦比的统帅。是中国战争史上最善于打歼灭战的军事统帅之一。白起能够在二千多年前便主张打歼灭战,这是非常难得的。其指挥的长平之战,是中国历史上最早、规模最大、最彻底的围歼战。其规模之大、战果之辉煌,在世界战争史上也是罕见的。西方的汉尼拔指挥了一个以少胜多的围歼战——坎尼战役,歼敌8万人,就被西方军史专家推崇的无以复加,但他的战绩在白起面前,简直就是小莱,当时西方的一个国家恐怕也没有100万吧!长平之战即使放在今天也豪不逊色,拿二战来说,能超过长平之战的(必须是围歼战),只有德军的基辅战役,像斯大林格勒战役也只歼灭了33万。	        </item>
        <item> 三国时期最杰出的军事家当属曹操,诸葛亮和司马懿等根本不能与曹操相比。特别是诸葛亮,书中都把他写神了,但他犯了许多重大的错误。曹操一生打了许多败仗。但曹操的统帅特点也非常鲜明,他是中国战争史上最善于、敢于听取部下的正确建议的统率,这也是曹操手下谋士众多的原因,像第一谋士荀彧,被曹操称为“吾之子房”,此外还有郭嘉、程昱、贾诩、司马懿、荀攸、许攸等,曹操的谋士之多,在中国历史上找不出第二人,而曹操对他们的计谋也言听计从。
 在统一北方战争中,曹操深谋远虑,善纳良策;利用汉室名义,争取民心,征抚兼施;重视战略基地建设,实行屯田,发展经济,减轻民赋,安定社会秩序;治军严整,赏罚分明;善任将吏.兼收并蓄,用兵灵活,力争主动,面临危局,临阵若定,善于捕捉战机,抓住作战关键,出奇制敌,终于取得内线作战和战略性决战的胜利。特别是官渡之战,集中体现曹操卓越的用兵谋略和指挥才能。曹操不但是卓越的军事家、统帅,还是杰出的政治家、文学家、诗人和军事理论家,像曹操这样全面的,在中国古代的军事家中是找不出第二个的。	        </item>
        <item>他发动了人类历史上规模最大的战争,他创建了世界上版图最大的国家,他将军事艺术推向了冷兵器时代的巅峰,他是世界历史阶段上影响最大的人物,他是人类历史上最大的成功者,他给人类带来了最大的灾难,他的作为给后人留下了最大的争论,他是中国历史上最具世界影响力的帝王--成吉思汗。 
  成吉思汗及其子孙三代鏖战几十年,统中国,掠欧洲,征印度,战埃及,并朝鲜,侵日本,入越南,平爪哇,先后灭亡四十多个国家,征服七百二十多个民族,发动了人类有史以来规模最大的战争。蒙古骑兵横扫十三世纪整个人类世界的五分之四,踏出了人类历史上版图最大的国家---蒙古帝国,创造了人类战争史上的奇迹。 
  成吉思汗生于蒙古贵族世家。九岁时,父亲被毒死,母亲带着铁木真和他的几个弟弟度过数年艰难生活。少年时期的艰险经历,培养了铁木真坚毅勇敢的素质,使铁木真从苦难中崛起,逐步担当起历史赋予他的重任.使他由一个弱小部落的首领,成为统一蒙古、统一中国、征服欧亚大陆的一代天骄。成吉思汗是后人难以比肩的战争奇才。他逢敌必战,战必胜的神奇将人类的军事天赋穷尽到了极点。成吉思汗一生进行过无数次的战争,无一败绩.兵锋所向,号称世界征服者的西方常胜军人仰马翻,一败涂地.黄金家族三代麾下的铁骑,势如破竹,硝烟漫卷到了俄罗斯、奥地利、德国、埃及、印度、日本、印度尼西亚....在广袤的欧亚大陆,成吉思汗成了战无不胜的神,对手无不闻风丧胆,屈服于脚下。什么人才能称得上战神?惟有成吉思汗!就连桀骜不驯的军事奇才拿破仑提起成吉思汗也自叹不如. 
各国学者虽然对成吉思汗评论各异,褒贬不一,但在两点上是一致的,都认为:成吉思汗是世界上最大的成功者,是对人类历史产生过最大影响的人。上个世纪将要结束之际,美国、日本等国发起了评选千年伟人的活动,结果揭晓列成吉思汗为“千年风云第一人”。成吉思汗留给后人一种民族的自豪,不仅在中国历史上具有重要地位,而且也是具有世界性影响的英雄人物。西方学者称成吉思汗为“全人类的帝王”。	        </item>
        <item>两汉最杰出的军事家当属韩信,韩信有着非常鲜明的统帅特点:就是灵活用兵,以少胜多。他是中国战争史上最善于灵活用兵的将领,其指挥的井陉之战、潍水之战都是战争史上的杰作。兵法上说:“兵无常势,水无常形。”打仗最重要的是灵活用兵。以多打少,谁都会打,以少胜多,才是最难打的。此外,韩信还为后世留下了大量的军事典故:明修栈道、暗渡陈仓,背水为营,拔帜易帜,半渡而击,四面楚歌,十面埋伏等。其用兵之道,为历代兵家所推崇。作为军事家,韩信是继孙武、白起之后,最为卓越的将领。孙武长于理论、白起长于野战、韩信则长于灵活用兵。作为战略家,他在拜将时的言论,成为楚汉战争胜利的根本方略。作为统帅,他一人之下,万人之上,率军出陈仓、定三秦、破代、灭赵、降燕、伐齐,直至垓下全歼楚军,无一败绩,天下莫敢与之相争。作为军事理论家,他与张良整兵书,并著有兵法三篇。	        </item>
        <item>李世民不仅是卓越的政治家,而且还是卓越的军事家、战略家,对历史了解不多的人,只知道贞观之治、敢于纳谏和以史为镜这些,很少知道李世民还是个军事家。李世民最鲜明的统帅特点是:后发制人,疲敌制胜,这在中国古代的军事家中也是最突出的。他在统一在战争中迫降薛仁杲的浅水原之战,消灭刘武周的柏壁之战,一举击灭王世充、窦建德两大集团的洛阳、虎牢之战,击败刘黑闼的洺水之战,这几个战略决战都是后发制人,疲敌制胜的典型战例。六个主要集团,李世民就消灭了四个。李世民不仅善于疲敌制胜,而且敢于坚持自己正确的看法,在统一战争中,李世民多次拒绝了部将错误的建议。如浅水原之战拒绝了窦轨的建议,率兵追击,最终大胜。柏壁之战中先后两次拒绝了诸将出战的请求,在追击过程中,又拒绝了刘弘基提出的待后续部队和粮草到来之后再行决战的建议,继续追击,终于大获全胜。洛阳、虎牢之战中又拒绝了刘弘基、李渊撤兵的建议,力排众议,并派人说服了李渊,对战役的胜利起了重要作用。这与其善于纳谏形成了鲜明的对比。此外,李世民还胆量过人,智谋超群。在五陇阪之战和泾阳之战中,都是用计谋智胜突厥军的。李世民即位后,采取了开明的民族政策,涌现出一大批著名的少数民族将领,被各民族称为“天可汗”。	</item>
        <item>清朝的努尔哈赤与成吉思汗是中国历史上最为著名的两个少数民族统帅,在他们身上有很多相似之处,虽然努尔哈赤的成就不如成吉思汗,但并不代表他没有这个才能。金庸先生曾说过,努尔哈赤是继成吉思汗后,世界历史上400年间最卓越的军事天才。虽然这话有些过,但不难看出努尔哈赤的过人之处。
努尔哈赤在统一女真战争的战争中,先后在兆佳城之战、浑河之战、古勒山之战、叶赫城之战中(特别是浑河之战,创造了以4人击败800人的奇迹),凭着坚强的意志、超人的智慧、卓越的军事才能,以外交争取与军事进攻相结合,采用远交近攻、分化瓦解、集中兵力,各个击破等策略,仅以遗甲13副起兵,经过36年的艰苦征战,最终由小到大,由弱变强,最终赢得了统一战争的胜利,堪称奇迹(成吉思汗统一蒙古用了21年)。
努尔哈赤在明与后金的战争中,先后在抚顺之战、清河城之战、萨尔浒之战、河西之战获胜,取得大片土地。特别是萨尔浒之战,努尔哈赤采取“凭尔几路来,我只一路去”的作战方针,集中优势兵力,各个击破。经5天激战,明军东、西、北三路全军覆没,唯南路军逃回。损失杜松、刘綖以下将领310余人,士卒45870余人,马、骡、驼28600余匹,以及大量武器装备。像这样的战役(包括台州之战等以少胜多的战役),在西方战史上,只有拿破仑的奥斯特里茨战役能与其媲美(在西方国家很少有灵活用兵、以少胜多战役,他们认为那是不可想像的。包括二战在内,也找不出几个以少胜多的战役来。
努尔哈赤最终在宁远之战中败给了袁崇焕,主要原因并不是才能上的,而是火力上明显不如明军,明军用的是西洋大炮,努尔哈赤虽然人多,但无济于事,后来耿仲明降清,带去了大量的红衣大炮,清军才得以所向无敌。	        </item>
        <item>孙膑是孙武后代,曾与庞涓为同窗师从鬼谷子学习兵法  孙膑
。后庞涓为魏惠王将军,因嫉贤妒能,恐孙膑取代他的位置,骗孙膑到魏使用奸计,孙膑被处以髌刑。齐欣赏其兵法韬略后被齐国使者偷偷救回齐国,被田忌善而客待。后通过田忌赛马被引荐与齐威王任为军师。马陵之战,身居辎车,计杀庞涓,打败魏军。著作有《孙膑兵法》.《孙膑兵法》是战国时期战争实践的理论总结,继承了前辈军事家的优秀成果,又对这些成果进行了发挥创造,在我国的军事思想史上占有重要地位。	        </item>
        <item>春秋时期最优秀的统帅无疑是孙武,孙武(约公元前535-?),字长卿,汉族,中国春秋时期齐国人。著名军事家。曾率领吴国军队大破楚国军队,占领了楚的国都郢城,几灭亡楚国。其著有巨作《孙子兵法》十三篇,为后世兵法家所推崇,被誉为“兵学圣典”,置于《武经七书》之首,被译为英文、法文、德文、日文,成为国际间最著名的兵学典范之书。	        </item>
        <item>在宋辽金西夏这一时期中,岳飞是最出色的统帅,岳飞是古代名将中最为全面的,善于野战、城邑攻坚战、山地攻坚战、防御战、水战、以步制骑等(见岳飞收复襄阳六郡之战、固石洞之战、洞庭湖之战、郾城之战等)。名将宗泽称其:“勇智才艺,古良将不能过。”岳飞不但在战术上善于指挥,而且在战略上更为突出,当时南宋对金国采取的是防御战略,唯岳飞不受当时战略思想束缚,主张进攻战略,并组织多次成功的反击作战。所以这一时期的将领在战略、战术上都没有人能够达到岳飞的成就。	        </item>
        <item>朱元璋和李世民一样,其军事才能鲜为人知,但他的军事才能却和李世民一样出色。朱元璋的统帅特点非常鲜明,他是一个卓越战略家。朱元璋在两淮之战,明灭元之战,明攻山东之战,明攻河北、大都之战,明攻闽广之战,明灭夏之战,明攻云南之战,明太祖北征沙漠之战中,都亲自制定作战方针,而最终的战争进程和朱元璋所欲料则完全一至,每言必中,堪称用兵如神,其驾驭战争的能力也堪称无与伦比。	        </item>
    </string-array>

    <string name="detail">	    白起征战沙场达37年之久,战胜攻取者七十余城,歼敌百万,未尝败绩。史学家司马迁称赞白起“料敌合变,出奇无穷,声震天下。”白起用兵,善于分析敌我形势,然后采取正确的战略方针对敌人发起进攻。如伊阙之战中集中兵力,各个击破;鄢郢之战中的掏心战术,并附以水攻;华阳之战长途奔袭等。白起最突出的军事思想是善于野战进攻,战必求歼,以消灭敌人的有生力量为主,他是战争史上运用围歼战术作战的无与伦比的统帅。是中国战争史上最善于打歼灭战的军事统帅之一。白起能够在二千多年前便主张打歼灭战,这是非常难得的。其指挥的长平之战,是中国历史上最早、规模最大、最彻底的围歼战。其规模之大、战果之辉煌,在世界战争史上也是罕见的。西方的汉尼拔指挥了一个以少胜多的围歼战——坎尼战役,歼敌8万人,就被西方军史专家推崇的无以复加,但他的战绩在白起面前,简直就是小莱,当时西方的一个国家恐怕也没有100万吧!长平之战即使放在今天也豪不逊色,拿二战来说,能超过长平之战的(必须是围歼战),只有德军的基辅战役,像斯大林格勒战役也只歼灭了33万。	        </string>
    <string name="title_activity_update">UpdateActivity</string>
    <string name="title_activity_add">AddActivity</string>

</resources>

 

 

 

  • 大小: 102.6 KB
  • 大小: 46.4 KB
  • 大小: 261.1 KB
  • 大小: 103.7 KB
  • 大小: 125 KB
  • 大小: 87.6 KB
  • 大小: 87.6 KB
  • 大小: 253.2 KB
  • 大小: 102.9 KB
  • 大小: 107.4 KB
  • 大小: 45 KB
分享到:
评论

相关推荐

    Android实现ListView的增删改查Demo

    这个"Android实现ListView的增删改查Demo"是一个实战教程,旨在教你如何在Android应用中实现对ListView中的数据进行添加、删除、修改和查询操作。这个Demo通常会结合SQLite数据库来存储和管理数据,因为SQLite是...

    android 密码管理app增删改查密码.zip

    首先,我们要理解“增删改查”(CRUD)是数据操作的基本概念,代表创建(Create)、读取(Read)、更新(Update)和删除(Delete)。在密码管理应用中,用户应能够添加新的密码记录,查看已存储的密码,修改现有记录...

    Android项目实战--手机卫士16--电话黑名单的增删改查

    在这个项目实战中,我们将深入探讨如何实现电话黑名单的增删改查功能。 首先,我们需要创建一个数据库来存储黑名单号码。在Android中,我们通常使用SQLite数据库,它是一个轻量级的、嵌入式的数据库,非常适合移动...

    Android 数据库(SQLite)【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练)】

    目 录 (壹)SQLite数据库简介 (贰)数据库的创建 (叁)数据库的使用 ...ListView控件 常用数据适配器(Adapter) BaseAdapter SimpleAdapter ArrayAdapter 实战演练——Android应用市场 (代码

    Android 绿豆通讯录【SQLite数据库】

    【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练)】 https://blog.csdn.net/weixin_44949135/article/details/105955663  Android 绿豆通讯录( SQLite数据库 + ListView...

    asp.net 注册+添加+修改+删除+查询

    查询结果通常会被绑定到UI组件,如GridView或ListView,以便用户查看和交互。 以上五个核心功能构成了大部分业务系统的数据管理基础。在实际开发中,还需要考虑安全性(如授权和角色管理)、用户体验(如表单验证和...

    学员管理系统(ADO+ACCESS)

    在学员管理系统中,ACCESS将作为后端存储,存储学员信息、课程详情等数据,同时支持用户通过ADO进行数据的增删改查操作。 **四、代码示例** 压缩包内的“代码中国.txt”文件可能包含了项目的关键代码片段,展示了...

    Android Studio 做的小型通讯录

    本项目"Android Studio 做的小型通讯录"是一个基于这个强大的工具进行的实战练习,旨在帮助开发者掌握Android应用的基本构建过程以及与之相关的技术。 首先,通讯录的核心功能是管理联系人信息,这涉及到了数据存储...

    ASP.NET开发实战1200例(第II卷)光盘-第16-20章内容

    这一章节可能会介绍如何使用ADO.NET、Entity Framework或其他ORM框架来与数据库进行交互,包括数据的增删改查操作,以及事务处理和存储过程的调用。此外,可能还会涉及到数据绑定和控件,如GridView、ListView等,...

    android 便签 Demo,完整源码

    在应用运行时,会通过SQLiteOpenHelper的子类来管理数据库的创建、升级等操作,并通过ContentProvider或直接调用SQL语句来实现数据的增删改查。 其次,ListView是Android中常用的展示大量列表数据的视图组件。在...

    vbbasic_visualbasic_vb数据库_

    开发此类系统需规划好数据库结构,设计合适的用户界面,编写处理业务逻辑的代码,并实现数据的增删改查功能。此外,还需考虑错误处理和异常捕获,保证程序的稳定运行。 五、数据库源码学习 本资料集提供的数据库...

    Android通讯录的源代码

    在本项目中,开发者会创建一个自定义的Content Provider来处理联系人数据的增删改查操作。 4. **SQLite数据库** Android使用SQLite作为本地数据库,用于持久化存储应用数据。在通讯录应用中,每个联系人信息会被...

    基于Android的图书管理系统(客户端源码+服务端源码+数据库脚本+项目部署说明+apk执行文件).zip

    这部分代码负责处理客户端的请求,对数据库进行增删改查操作,同时提供数据验证和业务逻辑处理。开发者可以从中学到RESTful API的设计原则,以及如何使用JSON格式传输数据,理解服务端与客户端的数据交换过程。 ...

    Android通讯录系统设计.zip

    每个联系人信息(如姓名、电话号码、电子邮件地址等)会被组织成表的形式,通过SQL语句进行增删改查操作。开发者需要掌握如何创建数据库、定义表结构、执行SQL语句以及封装数据访问层。 3. **Content Provider**:...

    ASP.NET 项目开发实践(光盘)

    9. `ListEditor`:这可能是一个列表编辑工具,涉及到列表的增删改查操作,可能使用了ASP.NET的数据网格(GridView)或ListView控件,以及AJAX技术提供部分页面刷新功能。 通过这些项目实例,开发者不仅可以学习到...

    aspbookstore

    通常会使用ADO.NET进行数据访问,通过SqlConnection、SqlCommand对象与SQL Server进行交互,实现数据的增删改查。同时,使用DataSet和DataTable来存储和操作数据,提供离线处理能力。 此外,页面设计和用户体验也是...

    android 实例源码 集合

    通过实例,我们可以学习如何创建自定义Adapter,以及如何实现数据的增删改查和滚动优化。 5. **Service与BroadcastReceiver**: Service是后台运行的服务,而BroadcastReceiver可以监听系统或自定义广播事件。实例...

    ASP.NET+SQL网上校友录设计与实现(源代码+设计说明书).zip

    在本项目中,SQL Server用于存储校友信息、交流记录等数据,通过ADO.NET库与ASP.NET应用进行交互,实现数据的增删改查操作。 3. **Web应用架构** 本项目可能采用了MVC(Model-View-Controller)架构,这是一种常见...

    c#通讯录 WPF表现层技术

    在`MyFriends`项目中,ViewModel可能包含了处理联系人增删改查的逻辑,并通过属性暴露给View。 4. **资源和样式**:WPF支持资源和样式的集中管理,可以通过定义 brushes、fonts、templates等资源来实现UI的统一风格...

    ASP.NET 开发某店POS积分管理系统-积分实绩更新及销售状况统计(源代码+论文)

    ASP.NET支持ADO.NET,可以方便地连接和操作SQL Server或其他关系型数据库,实现数据的增删改查。 4. **Entity Framework**:为了简化数据库操作,开发者可能使用了Entity Framework,这是.NET框架的一个ORM(对象...

Global site tag (gtag.js) - Google Analytics