Android 外部控件修改ListView内容


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;
        }   
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值