Listview меняет текст внутри EditText, когда kaypad невидим или видим - PullRequest
0 голосов
/ 24 января 2012

Проблема: в Listview заменяется текст внутри EditText.это происходит, когда клавиатура невидима или видима.как показано на изображениях ниже.

Image 1 : when keyboard is visible

Image 2 : when keyboard is invisible

Image 3 : when keyboard is visible

Код: ListView Activity Class:

    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){}
} 
}

Код: Список Адаптер класса Класс

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;
    }

}

Как решить эту проблему

Ответы [ 2 ]

1 голос
/ 25 января 2012

Проблема решена. Добавление android: windowSoftInputMode = "AdjustPan" этот атрибут в теге активности в manifest.xml

0 голосов
/ 24 января 2012

На первый взгляд, я думаю, что проблема возникает из-за следующего кода: -

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); 

Я думаю, что это может решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...