主显示布局以及代码:
activity_main.xml:
<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">
<ListView
android:id="@+id/lvGenerals"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#ccc"
android:dividerHeight="5dp"
/>
</RelativeLayout>
java代码:
package com.litsoft.main;
import java.util.ArrayList;
import java.util.List;
import com.litsoft.entity.General;
import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
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.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ListView lvGenerals;//listView对象
private List<General> generals;//将军的集合
private GeneralAdapter generalAdaper;//适配器
private static final int VIEW_DETAIL = 0;//查看详情
private static final int VIEW_DETELE = 1;//删除操作
private static final int VIEW_ADD= 2;//添加操作
private static final int VIEW_UPDATE = 3;//修改操作
private static final int ACTION_UPDATE =4;
private static final int ACTION_ADD =5;
private int mPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initView();
setListener();
}
private void initView() {
// TODO Auto-generated method stub
lvGenerals = (ListView) findViewById(R.id.lvGenerals);
generalAdaper = new GeneralAdapter(this,generals);
lvGenerals.setAdapter(generalAdaper);
}
private void initData() {
// TODO Auto-generated method stub
generals = new ArrayList();//初始化集合对象
int [] images = new int [] {
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
};//图片资源
String [] names = getResources().getStringArray(R.array.general);//姓名资源
String [] details = getResources().getStringArray(R.array.details);//详情资源
for(int i=0;i<names.length;i++){
General general = new General(images[i],names[i],details[i]);
generals.add(general);
}
}
private void setListener() {
this.lvGenerals.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
final int position, long id) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("请选择以下操作").setItems(new String[] {"查看详情","删除操作","增加操作","修改操作"}, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
switch(which){
case VIEW_DETAIL:
showDetail(position);
break;
case VIEW_DETELE:
generalAdaper.remove(position);
break;
case VIEW_ADD:
Intent intent1 = new Intent(MainActivity.this,AddActivity.class);
startActivityForResult(intent1, ACTION_ADD);
break;
case VIEW_UPDATE:
mPosition = position;
Intent intent = new Intent(MainActivity.this,UpdateActivity.class);
intent.putExtra("general",generals.get(position));
startActivityForResult(intent, ACTION_UPDATE);
break;
}
}
private void showDetail(int position) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
General general = generals.get(position);
builder.setTitle(general.getName()).setMessage(general.getDetail())
.setPositiveButton("返回", null);
AlertDialog dialog = builder.create();
dialog.show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
return true;
}
});
}
class GeneralAdapter extends BaseAdapter{
private Context context;
private List<General> generals;
public void remove(int position){
generals.remove(position);
this.notifyDataSetChanged();
}
public void update(int position,General general){
generals.set(position, general);
this.notifyDataSetChanged();
}
public void add(General general){
generals.add(general);
this.notifyDataSetChanged();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return generals.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return generals.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public GeneralAdapter(Context context, List<General> generals) {
super();
this.context = context;
this.generals = generals;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Viewholder viewholder = null;
if(convertView == null){
viewholder = new Viewholder();
convertView = View.inflate(context, R.layout.general, null);
viewholder.ivThumb = (ImageView) convertView.findViewById(R.id.ivThumb);
viewholder.tvName = (TextView) convertView.findViewById(R.id.tvName);
convertView.setTag(viewholder);
}else{
viewholder = (Viewholder) convertView.getTag();
}
try{
General general = this.generals.get(position);
viewholder.ivThumb.setImageResource(general.getImageSrc());
viewholder.tvName.setText(general.getName());
}catch(Exception e){
Log.i("main", e.getMessage());
}
return convertView;
}
class Viewholder{
ImageView ivThumb;
TextView tvName;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode!=RESULT_OK){
return;
}
switch (requestCode) {
case ACTION_UPDATE:
General general = (General) data.getSerializableExtra("general");
generalAdaper.update(mPosition, general);
break;
case ACTION_ADD:
General general1 = (General) data.getSerializableExtra("general");
generalAdaper.add(general1);
break;
}
}
}
修改操作的布局以及代码:
activity_update.xml
<LinearLayout 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"
android:orientation="vertical" >
<ImageView
android:id="@+id/ivupdate"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/baiqi"/>
<EditText
android:id="@+id/etupdatename"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/etudpatedetail"
android:layout_width="match_parent"
android:layout_height="110dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_horizontal">
<Button
android:id="@+id/updateBt"
android:text="修改"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/cancleBt"
android:text="放弃"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
</LinearLayout>
java代码:
package com.litsoft.main;
import com.litsoft.entity.General;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
public class UpdateActivity extends ActionBarActivity {
private EditText etupdatename,etudpatedetail;
private General general = null;
private int mImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);
initData();
initView();
setlistenser();
}
private void setlistenser() {
// TODO Auto-generated method stub
findViewById(R.id.cancleBt).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
findViewById(R.id.updateBt).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String name = etupdatename.getText().toString();
String detail = etudpatedetail.getText().toString();
General general = new General(mImage,name,detail);
Intent intent = new Intent(UpdateActivity.this,MainActivity.class);
intent.putExtra("general", general);
setResult(RESULT_OK, intent);
finish();
}
});
}
private void initView() {
// TODO Auto-generated method stub
etupdatename = (EditText) findViewById(R.id.etupdatename);
etudpatedetail = (EditText) findViewById(R.id.etudpatedetail);
etupdatename.setText(general.getName());
etudpatedetail.setText(general.getDetail());
}
private void initData() {
// TODO Auto-generated method stub
Intent intent = getIntent();
general = (General) intent.getSerializableExtra("general");
mImage = general.getImageSrc();
}
}
添加操作布局以及代码 :activity_add.xml
<LinearLayout 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"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:text="姓名"
android:layout_width="80dp"
android:layout_height="80dp"/>
<EditText
android:id="@+id/etaddname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:text="详细介绍"
android:layout_width="80dp"
android:layout_height="80dp"/>
<EditText
android:id="@+id/etadddetail"
android:layout_width="match_parent"
android:layout_height="110dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_horizontal">
<Button
android:id="@+id/addBt"
android:text="添加"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/addcancleBt"
android:text="放弃"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
</LinearLayout>
java代码:
package com.litsoft.main;
import com.litsoft.entity.General;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
public class AddActivity extends ActionBarActivity {
private EditText etaddname,etadddetail;
private General general = null;
private int mImage = R.drawable.baiqi;//测试写成固定的了
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
initView();
setlistenser();
}
private void setlistenser() {
// TODO Auto-generated method stub
findViewById(R.id.addcancleBt).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
findViewById(R.id.addBt).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String name = etaddname.getText().toString();
String detail = etadddetail.getText().toString();
General general = new General(mImage,name,detail);
Intent intent = new Intent(AddActivity.this,MainActivity.class);
intent.putExtra("general", general);
setResult(RESULT_OK, intent);
finish();
}
});
}
private void initView() {
// TODO Auto-generated method stub
etaddname = (EditText) findViewById(R.id.etaddname);
etadddetail = (EditText) findViewById(R.id.etadddetail);
}
}
其他 :
general.xml
<?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="80dp"
android:layout_height="80dp"
android:src="@drawable/baiqi"/>
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:text="白起"
android:textSize="20sp"
android:gravity="center_vertical"
android:layout_marginLeft="20dp"
/>
</LinearLayout>
java类:General.java
package com.litsoft.entity;
import java.io.Serializable;
public class General implements Serializable{
private int imageSrc;
private String name;
private String detail;
public int getImageSrc() {
return imageSrc;
}
public void setImageSrc(int imageSrc) {
this.imageSrc = imageSrc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
@Override
public String toString() {
return "General [imageSrc=" + imageSrc + ", name=" + name + ", detail="
+ detail + "]";
}
public General(int imageSrc, String name, String detail) {
super();
this.imageSrc = imageSrc;
this.name = name;
this.detail = detail;
}
}
效果:
相关推荐
这个"Android实现ListView的增删改查Demo"是一个实战教程,旨在教你如何在Android应用中实现对ListView中的数据进行添加、删除、修改和查询操作。这个Demo通常会结合SQLite数据库来存储和管理数据,因为SQLite是...
ListView 是 Android 中最常用的控件之一,用于显示列表数据,但是当我们需要对列表数据进行增删改查操作时,需要了解 Android 中的 ListView 数据增删改查机制。 ListView 数据增删改查机制 在 Android 中,对 ...
Android Stdio开发的一个应用,运用Sqlite数据库和listview实现在前端进行对Sqlite的增删改查,数据库中的数据显示在Listview上,在Editetext上输入关键字会查询带有关键字的数据,点击Listview的每一行都可以对该行...
Android+SQlite 简单的《学生信息管理系统》(实现基本增删改查) 此代码中还有与其相对应的apk文件(在SIMS/bin目录中),大家可先行放手机上看一下效果。 希望对初学者有一定的帮助。(本人自己编写)
本项目专注于在Android环境中实现对远程MySQL数据库的增删改查(CRUD)操作,结合了MySQL数据库、PHP服务器端脚本以及Android客户端的集成应用。 首先,MySQL是一种广泛使用的开源关系型数据库管理系统,它具有高度...
在Android开发中,"增删改查"(CRUD,Create、Read、Update、Delete)是数据操作的基础,尤其对于数据库交互来说至关重要。这个"android增删改查样例"显然是一个面向初学者的示教项目,旨在帮助开发者理解如何在...
在这个“【Android】Sqlite数据库增删改查(修改版)”项目中,我们将探讨如何在Android应用中使用SQLite进行基本的数据操作:增加、删除、修改和查询。 首先,我们要了解SQLite在Android中的集成。每个Android应用...
本文主要参考博客完成,通过SQLite对Android数据库进行简单的操作,包括创建数据库、建表、更新数据、删除数据、插入数据,并通过适配器显示在ListView中。基础免费资源,仅供大家学习。希望对大家有所帮助,是...
Android管理信息系统: 包括SQLite 数据库的增删改查,ListView的刷新,弹出对话框提示操作 ListView列表的优化 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间...
ListView是Android平台上常见的一种...掌握好ListView的增删改查操作,能够有效地提升用户体验,同时也能为复杂的界面设计打下坚实的基础。在实际开发中,还需要考虑性能优化和用户体验,使ListView更加高效、易用。
SQLite支持SQL语法,使得我们能够方便地进行数据的增删改查操作。在这个主题中,我们将深入探讨如何在Android应用中使用SQLite数据库,并将数据展示在ListView上,同时优化ListView的性能。 首先,我们需要创建一个...
这个"安卓电话簿课程设计(实现对联系人的增删改查)"项目旨在帮助开发者理解如何利用Android SDK来实现这样的功能。下面我们将深入探讨这个项目所涉及的主要知识点。 首先,我们关注的是AndroidManifest.xml文件,它...
本示例"Android增删改查"深入探讨了如何在Android环境中利用SQLite数据库进行基本的数据操作,包括添加(Insert)、删除(Delete)、修改(Update)和查询(Query)。同时,它还涉及到了Android的SoundPool类,这是...
在Android开发中,"增删改查"(CRUD,Create, Read, Update, Delete)是基础且重要的功能,广泛应用于各种数据管理类的应用程序。这个小程序可能是一个基础的数据库操作示例,让我们来深入探讨Android中如何实现这些...
在实现商品的增删查改功能时,用户界面的设计至关重要。增加商品通常会引导用户填写商品信息,然后通过调用数据库操作方法保存到SQLite中。删除和修改功能则可能需要用户选择特定的商品,系统再弹出相应的对话框确认...
在这个案例中,我们将深入探讨如何实现通讯录的增删查改功能。 首先,我们需要创建一个SQLite数据库。SQLite是Android系统内置的关系型数据库,它轻量级且易于操作。要创建一个通讯录数据库,我们需要定义一个`...
"Android增删改查小Demo"是一个很好的实践项目,可以帮助开发者理解和掌握如何在Android应用中使用SQLite数据库进行基本的数据操作,包括添加(Add)、删除(Delete)、修改(Update)和查询(Query)。 首先,...
在Android开发领域,"android入门、增删改查"是一个非常基础且重要的主题,它涵盖了Android应用程序开发的基本操作,特别是涉及到数据管理的核心部分。在这个主题中,开发者将学习如何创建用户界面,处理用户输入,...
首先,我们要理解“增删改查”(CRUD)是数据操作的基本概念,代表创建(Create)、读取(Read)、更新(Update)和删除(Delete)。在密码管理应用中,用户应能够添加新的密码记录,查看已存储的密码,修改现有记录...
通过以上知识点的整合和实现,我们可以构建一个基本的图书信息管理系统,满足用户对图书信息的增删查改需求。随着项目复杂性的增加,还可以考虑引入其他技术,如搜索功能、分页加载、网络数据同步等,以提升用户体验...