listView优化_AlertDialog弹窗修改条目

  • 一.tml代码
    <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="${relativePackage}.${activityClass}" >
       <ListView 
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:id="@+id/lv">
       </ListView>
    </RelativeLayout>
    

 二.条目代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="80dp">
	
    <ImageView 
        android:id="@+id/img"
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:src="@drawable/ic_launcher"/>
	
    
    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical">
        <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:textColor="#000"
        android:id="@+id/text_name"
        android:text="灰太狼"/>
        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000"
        android:textSize="18sp"
        android:text="价格:"/>
            <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text_price"
        android:textColor="#000"
        android:text="2200元"/>
        </LinearLayout>
        
    </LinearLayout>

</RelativeLayout>

三.弹窗输入框.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="wrap_content"
    android:orientation="vertical" >
    <EditText 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ed_upd"
        android:hint="请输入修改的价格"/>
	
</LinearLayout>

四.java代码

package com.example.list_upd;

public class Person {
	private String name;
	private int price;
	public Person() {
		// TODO Auto-generated constructor stub
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public Person(String name, int price) {
		super();
		this.name = name;
		this.price = price;
	}
}
package com.example.list_upd;

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

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
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.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
	private List<Person> list;
	private ListView lv;
	private MainActivity.Madapter madapter;
	private EditText ed_upd;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//获取控件
		lv=(ListView) findViewById(R.id.lv);
		//初始化数据
		initData();
		//自定义适配器
		madapter=new Madapter();
		//设置适配器
		lv.setAdapter(madapter);
		//条目点击事件,修改条目中的内容
		lv.setOnItemClickListener(new OnItemClickListener() {
		@Override
		public void onItemClick(AdapterView<?> parent, View view,
			final int position, long id) {
			//获取AlertDialog中输入框的视图
			View inflate = View.inflate(MainActivity.this,R.layout.ed_view, null);
			//获取AlertDialog中输入框的控件
			ed_upd = (EditText) inflate.findViewById(R.id.ed_upd);
				AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this)
				//头部
				.setTitle("调整商品价格")
				//内容,获取的是条目的name值
				.setMessage(list.get(position).getName())
				//输入框
				.setView(inflate)
				//确定事件
				.setPositiveButton("确定", new OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						//ed_upd.getText().toString()获取输入框的值
						//Integer.parseInt() 把String类型强转成int类型
						//list.get(position).setPrice()获取点击条目的list值,修改price的内容
						list.get(position).setPrice(Integer.parseInt(ed_upd.getText().toString()));
						//刷新适配器
						madapter.notifyDataSetChanged();
					}
				})
				.create();
				alertDialog.show();
					}
				});
	}
	private void initData() {
		list=new ArrayList<Person>();
		for (int i = 0; i <20; i++) {
			list.add(new Person("喜羊羊与灰太狼",2200));
		}
	}
	public class Madapter extends BaseAdapter{
		@Override
		public int getCount() {
			return list.size();
		}
		@Override
		public Object getItem(int position) {
			return list.get(position);
		}
		@Override
		public long getItemId(int position) {
			return position;
		}
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// 优化
			ViewHolder holder;
			if (convertView==null) {
				holder=new ViewHolder();
				//获取条目布局
				convertView=View.inflate(MainActivity.this,R.layout.wang, null);
				//复用控件
				holder.name=(TextView) convertView.findViewById(R.id.text_name);
				holder.price=(TextView) convertView.findViewById(R.id.text_price);
				//绑定
				convertView.setTag(holder);
			} else {
				holder=(ViewHolder) convertView.getTag();
			}
			//给复用控件设置值
			holder.name.setText(list.get(position).getName());
			holder.price.setText(list.get(position).getPrice()+"");
			return convertView;
		}
	}
	class ViewHolder{
		TextView name;
		TextView price;
	}
}

猜你喜欢

转载自blog.csdn.net/wangshuo_/article/details/83861948