标签:
MainActivity
package com.sxt.day05_11; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.sxt.day05_11.entity.GeneralBean; public class MainActivity extends Activity { ListView mlvGeneral; List<GeneralBean> mGenerals; GeneralAdapter mAdapter; private static final int ACTION_DETAILS=0; private static final int ACTION_ADD=1; private static final int ACTION_DELETE=2; private static final int ACTION_UPDATE=3; int mPosition; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); initView(); setListener(); } private void setListener() { 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 OnClickListener() {//倒的包是import android.content.DialogInterface.OnClickListener; @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case ACTION_DETAILS: showDetails(position);//这个position在mGenerals.get(position);调用,说明position是资源总条数范围, break; case ACTION_ADD: break; case ACTION_DELETE: mAdapter.remove(position);//调用适配器的删除方法 break; case ACTION_UPDATE: //启动修改的Activity,并将当前的军事家对象传递过去 Intent intent=new Intent(MainActivity.this, UpdateActivity.class); intent.putExtra("general", mGenerals.get(position));//mGenerals.get(position)的对象要实现序列化接口 mPosition=position; startActivityForResult(intent, ACTION_UPDATE);//要求返回结果,ACTION_UPDATE是requestCode 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.create(); dialog.show(); return true; } }); } private void initView() { mlvGeneral=(ListView) findViewById(R.id.lvGeneral); mAdapter=new GeneralAdapter(mGenerals, this); mlvGeneral.setAdapter(mAdapter); } 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 void remove(int position){//适配器移出方法,就是移除资源总数据, generals.remove(position); notifyDataSetChanged();//BaseAdapter的方法,执行后安卓系统会调用getView()方法重新绘制, } public void add(GeneralBean general){ mGenerals.add(general); notifyDataSetChanged(); } public void update(int position,GeneralBean general){ mGenerals.set(position, general); notifyDataSetChanged(); } public GeneralAdapter(List<GeneralBean> generals, MainActivity context) { super(); this.generals = generals; this.context = context; } @Override public int getCount() { return generals.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub 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); holder=new ViewHolder(); holder.ivThumb=(ImageView) convertView.findViewById(R.id.ivThumb); holder.tvName=(TextView) convertView.findViewById(R.id.tvName); convertView.setTag(holder); }else{//滚屏的时候重复利用convertView 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 //处理UpdateActivity返回的结果 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode!=RESULT_OK){//判断resultCode return ; } switch (requestCode) {//判断requestCode case ACTION_UPDATE: GeneralBean general=(GeneralBean) data.getSerializableExtra("general");//获取修改完以后的对象 mAdapter.update(mPosition, general);//调用适配器的更新方法,mPosition是修改的对象在集合的索引 break; case ACTION_ADD: break; } } }
mainactivity页面:
<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>
修改Activity:
package com.sxt.day05_11; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.ImageView; import com.sxt.day05_11.entity.GeneralBean; public class UpdateActivity extends Activity { //要修改对象的名字(控件显示),详细信息(控件显示), EditText metName,metDetails; ImageView mivThumb;//图片 int mPhotoId;//图片id @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_update); initView(); initData(); setListener(); } private void setListener() { setOKClickListtener(); setCancelClickListener(); } private void setCancelClickListener() { findViewById(R.id.btnCancel).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); } private void setOKClickListtener() { findViewById(R.id.btnOK).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String details=metDetails.getText().toString(); String name=metName.getText().toString(); //不能根据图片控件获取图片的id,所以多用一个变量保存图片的id GeneralBean general=new GeneralBean(mPhotoId, name, details); Intent intent=new Intent(UpdateActivity.this, MainActivity.class); intent.putExtra("general", general); setResult(RESULT_OK, intent);//RESULT_OK是resultCode结果码 finish();//关闭当前页面 } }); } //接收数据 private void initData() { Intent intent = getIntent(); GeneralBean general=(GeneralBean) intent.getSerializableExtra("general"); //数据显示在控件里面 metDetails.setText(general.getDetails()); metName.setText(general.getName()); mivThumb.setImageResource(general.getResid());//图片是根据id获取的 mPhotoId=general.getResid();//保存图片id } private void initView() { //用布局实例化对象 metDetails=(EditText) findViewById(R.id.etDetails); metName=(EditText) findViewById(R.id.etName); mivThumb=(ImageView) findViewById(R.id.iv_updae_thumb); } }
修改Activity页面:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/iv_updae_thumb" android:layout_width="80dp" android:layout_height="80dp" android:scaleType="fitXY" android:src="@drawable/baiqi"/> <EditText 可编辑的输入框 android:id="@+id/etName" android:layout_below="@id/iv_updae_thumb" android:layout_width="80dp" android:layout_height="wrap_content" android:text="白起"/> <EditText android:id="@+id/etDetails" android:layout_width="match_parent" android:layout_height="110dp" android:text="@string/detail" android:layout_toRightOf="@id/iv_updae_thumb"/> <Button android:id="@+id/btnOK" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="修改" android:layout_below="@id/etDetails" android:layout_marginLeft="50dp" android:layout_marginTop="20dp"/> <Button android:id="@+id/btnCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="放弃" android:layout_below="@id/etDetails" android:layout_marginTop="20dp" android:layout_toRightOf="@id/btnOK" android:layout_marginLeft="50dp"/> </RelativeLayout>
item_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="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:gravity="center_vertical" 内部垂直居中 android:textSize="20sp" android:text="白起" android:layout_marginLeft="10dp"/> </LinearLayout>
标签:
原文地址:http://www.cnblogs.com/yaowen/p/4889382.html