android listView优化与弹框删除

package com.example.listviewyouhua3;

import java.util.ArrayList;

import android.R.layout;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
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.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

private ListView lv;
private ArrayList<Person> list;
private  MAdapter mAdapter;
private GridView gv;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //获取控件
    gv = (GridView) findViewById(R.id.gv);
    
    lv=(ListView) findViewById(R.id.lv);
    //获取切换button按键
    btn = (Button) findViewById(R.id.btn_qh);
    //初始化
    initDate();
    //创建适配器
    mAdapter = new MAdapter();
    //应用适配器
    gv.setAdapter(mAdapter);
    lv.setAdapter(mAdapter);
    
    btn.setOnClickListener(new OnClickListener() {
		

		@Override
		public void onClick(View v) {
			   View wxl = View.inflate(MainActivity.this,R.layout.gh,null);
			   
			   final PopupWindow popupWindow=new PopupWindow(wxl,
					   //
					   LayoutParams.WRAP_CONTENT,
					   LayoutParams.WRAP_CONTENT,true						   
					   );
			   popupWindow.showAsDropDown(wxl);
			   //列表
			    Button  btn_button1= (Button) wxl.findViewById(R.id.btn_button1);
			   //表格
			    Button btn_button2 = (Button) wxl.findViewById(R.id.btn_button2);
			
			    btn_button1.setOnClickListener(new OnClickListener() {
					
					@Override
					public void onClick(View v) {
						//列表展示
						lv.setVisibility(v.VISIBLE);
						//表格展示
						gv.setVisibility(v.INVISIBLE);
						
						popupWindow.dismiss();
					}
				});
			    btn_button2.setOnClickListener(new OnClickListener() {
					
					@Override
					public void onClick(View v) {
						//表格展示
						gv.setVisibility(v.VISIBLE);
						//列表展示
						lv.setVisibility(v.INVISIBLE);
						
						popupWindow.dismiss();
						
						
					}
				});
			    
		}
	});
    
}

private void initDate() {
	list=new ArrayList<Person>();
	for (int i = 0; i <30; i++) {  			
		list.add(new Person("王鑫林"+i,"$"+i,false));
	}
}
class MAdapter extends BaseAdapter{


	@Override
	public View getView(final int position, View convertView, ViewGroup parent) {
		final ViewHolder viewHolder;
		if (convertView==null) {
			viewHolder=new ViewHolder();
			convertView=View.inflate(MainActivity.this,R.layout.lv_item,null);
			//获取值
			viewHolder.name=(TextView) convertView.findViewById(R.id.name);
			viewHolder.price=(TextView) convertView.findViewById(R.id.price);
			viewHolder.button1=(Button) convertView.findViewById(R.id.button1);
			viewHolder.checkBox1=(CheckBox) convertView.findViewById(R.id.checkBox1);
			
			convertView.setTag(viewHolder);
		} else {
			viewHolder=  (ViewHolder) convertView.getTag();

		}
		viewHolder.name.setText(list.get(position).getName());
		viewHolder.price.setText(list.get(position).getPrice());
		//viewHolder.checkBox1.setChecked(list.get(position).isIscheck());
		
		viewHolder.checkBox1.setChecked(list.get(position).isIscheck());
		
		viewHolder.button1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
           AlertDialog.Builder builder = new Builder(MainActivity.this);
				
				builder.setIcon(R.drawable.ic_launcher)
				.setTitle("删除框")
				.setMessage("确认删除吗?")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						list.remove(position);							

// Toast.makeText(MainActivity.this,
// “删除成功”+list.get(position).getName(),
// Toast.LENGTH_SHORT).show();
//更新适配器``
mAdapter.notifyDataSetChanged();
}
})
.setNegativeButton(“取消”, new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, 
								"取消删除"+list.get(position).getName(), 
								Toast.LENGTH_SHORT).show();
					}
				})
				.create().show();	
			}
		});
		
		
		
		return convertView;
	}
	
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return list.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return list.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}		
}
//复用
class ViewHolder{
	TextView name;
	TextView price;
	Button button1;
	CheckBox checkBox1;
}

public void checkAll(View v){
	for (int i = 0; i <list.size(); i++) {
		if (list.get(i).isIscheck()) {
			list.get(i).setIscheck(false);
			mAdapter.notifyDataSetChanged();
		}else{
			list.get(i).setIscheck(true);
			mAdapter.notifyDataSetChanged();
		}
	}
}

}

猜你喜欢

转载自blog.csdn.net/qq_42609613/article/details/83063106