Android 当kaypad不可见或可见时,Listview交换EditText内的文本

Android 当kaypad不可见或可见时,Listview交换EditText内的文本,android,android-listview,android-edittext,android-keypad,Android,Android Listview,Android Edittext,Android Keypad,问题:在Listview中交换EditText中的文本。它发生在键盘不可见或可见时。如下图所示 代码:ListView活动类: public class DayPlannerFormActivity extends Activity { private TextView txtHeader; private Context mContext; private ListView lvDayplannerFrom; private FormDayPla

问题:在Listview中交换EditText中的文本。它发生在键盘不可见或可见时。如下图所示

代码:ListView活动类:

    public class DayPlannerFormActivity extends Activity {

    private TextView txtHeader;
    private Context mContext;
    private ListView lvDayplannerFrom;
    private FormDayPlannerAdapter adapter;
    private Activity activity;
    final Handler mHandler = new Handler();

    private Vector<DayPlannerForm> list = new Vector<DayPlannerForm>();
    final Runnable mUpdateResults = new Runnable() {
        public void run() {
            updateResultsInUi();
        }
    };

   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dayplanner);
        mContext = this;    
        activity = this;
        txtHeader = (TextView) findViewById(R.id.txtHeader);
        txtHeader.setText(R.string.haivlate);
        lvDayplannerFrom = (ListView) findViewById(R.id.lvDayplanner);
        startfetchOperation();

   }

    private void updateResultsInUi() {
        adapter= new FormDayPlannerAdapter(activity,list);
        lvDayplannerFrom.setAdapter(adapter);

    }

    protected void startfetchOperation() {
        Thread t = new Thread() {
                @Override
                public void run() {
                    getData();
                }
            };
            t.start();
        }

   private void getData() {
    try{
         list.clear();
         DayPlannerForm dpf = new  DayPlannerForm("Task Name 1","","");
         list.add(dpf);
         dpf =new  DayPlannerForm("Task Name 2","","");
         list.add(dpf);
         mHandler.post(mUpdateResults);
       } catch (Exception e){
                mHandler.post(mUpdateResults);
       }
  }
  @Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
     try{

         if(lvDayplannerFrom != null)
             lvDayplannerFrom.setAdapter(null);

     } catch (Exception e){}
} 
}
公共类DayPlannerFormActivity扩展活动{
私有文本视图txtHeader;
私有上下文;
私有ListView lvDayplannerFrom;
专用FormDayPlanner适配器;
私人活动;
最终处理程序mHandler=新处理程序();
私有向量列表=新向量();
最终可运行mUpdateResults=新可运行(){
公开募捐{
updateResultsInUi();
}
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.dayplanner);
mContext=这个;
活动=此;
txtHeader=(TextView)findViewById(R.id.txtHeader);
setText(R.string.haivlate);
lvDayplannerFrom=(ListView)findViewById(R.id.lvDayplanner);
startfetchOperation();
}
私有void updateResultsInUi(){
适配器=新FormDayPlannerAdapter(活动、列表);
lvDayplannerFrom.setAdapter(适配器);
}
受保护的void startfetchOperation(){
线程t=新线程(){
@凌驾
公开募捐{
getData();
}
};
t、 start();
}
私有void getData(){
试一试{
list.clear();
DayPlannerForm dpf=新的DayPlannerForm(“任务名称1”、“任务名称”、“任务名称”);
列表。添加(dpf);
dpf=新的DayPlanner表单(“任务名称2”、“任务名称”、“任务名称”);
列表。添加(dpf);
mHandler.post(mUpdateResults);
}捕获(例外e){
mHandler.post(mUpdateResults);
}
}
@凌驾
受保护的空onDestroy(){
//TODO自动生成的方法存根
super.ondestory();
试一试{
if(lvDayplannerFrom!=null)
lvDayplannerFrom.setAdapter(null);
}捕获(例外e){}
} 
}
代码:列表视图适配器类

public class FormDayPlannerAdapter extends BaseAdapter {

    private Activity mActivity;
    private static Vector<DayPlannerForm> list;
    private static LayoutInflater inflater;
    private Context mContext;
    public FormDayPlannerAdapter ( Activity _activity,Vector<DayPlannerForm> _list) {
        mActivity = _activity;
        mContext = _activity;
        list = _list;
        inflater = (LayoutInflater)mActivity.getSystemService(mActivity.LAYOUT_INFLATER_SERVICE);
    }

    public static class ViewHolder{
        public TextView txtTaskName;
        public CheckBox chbAction;
        public EditText edtDecription;
    }


    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }


    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }


    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }


    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

         View vi=convertView;
            ViewHolder holder;
            if(convertView==null){
                vi = inflater.inflate(R.layout.dayplanner_listitem_form, null);
                holder=new ViewHolder();
                holder.txtTaskName=(TextView)vi.findViewById(R.id.txtTaskName);
                holder.chbAction = (CheckBox) vi.findViewById(R.id.chbAction);
                holder.edtDecription =  (EditText) vi.findViewById(R.id.edtDecription);
                vi.setTag(holder);
            }
            else
              holder=(ViewHolder)vi.getTag();

            holder.txtTaskName.setText(list.get(position).getTaskName());


        return vi;
    }

}
公共类FormDayPlannerAdapter扩展了BaseAdapter{
私人活动能力;
私有静态向量表;
私人静电充气机;
私有上下文;
public FormDayPlannerAdapter(活动\活动,向量\列表){
mActivity=_活动;
mContext=_活动;
列表=_列表;
充气机=(LayoutInflater)mActivity.getSystemService(mActivity.LAYOUT\u充气机\u服务);
}
公共静态类视图持有者{
公共文本视图txtTaskName;
公共卫生;
公开编辑文字说明;
}
public int getCount(){
//TODO自动生成的方法存根
返回list.size();
}
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图vi=转换视图;
视窗座;
if(convertView==null){
vi=充气机。充气(R.layout.dayplanner\u listitem\u表单,空);
holder=新的ViewHolder();
holder.txtTaskName=(TextView)vi.findViewById(R.id.txtTaskName);
holder.chbAction=(复选框)vi.findViewById(R.id.chbAction);
holder.edtDecription=(EditText)vi.findViewById(R.id.edtDecription);
vi.setTag(支架);
}
其他的
holder=(ViewHolder)vi.getTag();
holder.txtaskname.setText(list.get(position.getTaskName());
返回vi;
}
}

如何解决此问题

乍看之下,我认为问题是由以下代码引起的:-

DayPlannerForm dpf = new  DayPlannerForm("Task Name 1","","");
         list.add(dpf);
         dpf =new  DayPlannerForm("Task Name 2","","");
         list.add(dpf); 
对于每个任务名称,您应该使用DayPlannerForm类的不同对象

DayPlannerForm dpf1,dpf2; 
      dpf1 = new  DayPlannerForm("Task Name 1","","");
      list.add(dpf1);
      dpf2 =new  DayPlannerForm("Task Name 2","","");
      list.add(dpf2); 

我认为这可能会解决您的问题。

通过在manifest.xml的活动标记中添加安卓:windowSoftInputMode=“adjustPan”此属性来解决问题