package com.example.test;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
public class test extends Activity {
private MyListAdapter mListItemAdapter;
private ArrayList<HashMap<String,Object>> listItem;
private ListView mList;
private Button mBtn,mBtn1;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
setContentView(R.layout.tt);
listItem = getData(3);
mList = (ListView)findViewById(R.id.listviewID);
mListItemAdapter = new MyListAdapter(this);
mList.setAdapter(mListItemAdapter);
mBtn = (Button)findViewById(R.id.mBtn);
mBtn1 = (Button)findViewById(R.id.mBtn1);
mBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.i("Abbi " , "setOnClickListener");
update(1);
}
});
mBtn1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
update(2);
}
});
}
private Handler mHandler = new Handler() //这里注意很有意义,类似线程
{
@Override
public void handleMessage(Message msg)
{
if(msg.what == 1)
{
if(mListItemAdapter.getCount() == listItem.size())
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("expEditTextId", "0000000" );
map.put("resEditTextId", "1111111");
listItem.add(map);
}
}
else if(msg.what == 2)
{
HashMap<String, Object> map = listItem.get(listItem.size()-1);
if(map.containsKey("resEditTextId"))
{
String value = (String)map.get("resEditTextId");
map.put("resEditTextId", value + "========================");
listItem.set(listItem.size()-1 ,map);
}
}
mListItemAdapter.notifyDataSetChanged();
}
};
public void update(int type)
{
Message msg = mHandler.obtainMessage();
msg.what = type;
msg.sendToTarget();
}
private ArrayList<HashMap<String, Object>> getData(int num)
{
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
for(int i = 0; i < num; i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("expEditTextId", "abbi" + i);
map.put("resEditTextId", "abbi" + i + "///");
listItem.add(map);
}
return listItem;
}
public class MyListAdapter extends BaseAdapter
{
private LayoutInflater mInflater;
public MyListAdapter(Context context)
{
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listItem.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder = null;
if(convertView == null)
{
convertView = mInflater.inflate(R.layout.content, null);
holder = new ViewHolder();
holder.mMyEdit = (MyEdit)convertView.findViewById(R.id.expEditTextId);
holder.mMyEdit1 = (MyEdit)convertView.findViewById(R.id.resEditTextId);
convertView.setTag(holder);
}else
{
holder = (ViewHolder)convertView.getTag();
}
holder.mMyEdit.setText((String)listItem.get(position).get("expEditTextId").toString());
holder.mMyEdit1.setText((String)listItem.get(position).get("resEditTextId").toString());
return convertView;
}
}
public final class ViewHolder
{
public MyEdit mMyEdit;
public MyEdit mMyEdit1;
}
}
其中 MyEdit.java如下:
package com.example.test;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.text.InputType;
import android.util.AttributeSet;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
public class MyEdit extends EditText{
public MyEdit(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
setCustomSelectionActionModeCallback(new NoTextSelectionMode());
setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
requestFocus();//居然有这个来聚焦点的!!!!
}
class NoTextSelectionMode implements ActionMode.Callback
{
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
}
}