2

I'm using a listview which has text view and edittext. I'm controlling the data in it through ViewHolder. The problem is that when I write the data in first column and second as so on the portion visible on screen and when scroll it the data from first row is copied to the last row automatically.

Here is the code:

private class MobileArrayAdapter extends ArrayAdapter
{
    ViewHolder holder;
    private Context context;
    private ArrayList values;

    @SuppressWarnings("unchecked")
    public MobileArrayAdapter(Context context, ArrayList values)
    {
        super(context, R.layout.taskstrt, values);
        this.context = context;
        this.values = values;
        System.out.println("in mobile constructor");
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (convertView == null)
        {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.taskstrt, parent, false);
            holder.editText = (EditText) convertView.findViewById(R.id.editText1);
            holder.textView = (TextView) convertView.findViewById(R.id.textView1);
            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.textView.setText(values.get(position).toString());
        holder.textView.setId(position);
        holder.editText.setId(position);
        holder.editText.setFocusable(false);
        // holder.editText.setFocusableInTouchMode(true);

        holder.editText.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
                final int positio = v.getId();
                edittexthold = (EditText) v;
                textholder = (TextView) v;
                edittexthold.setFocusable(true);

                if (edittexthold.getText().toString().length() > 0)

                {
                    HashMap<Integer, String> Map = new HashMap<Integer, String>();
                    Map.put(positio, edittexthold.getText().toString());

                    data.set(positio, Map);
                    System.out.println(data);
                }

                System.out.println(positio + " this is position that is clicked");
                if (positio == 4)
                {
                    System.out.println("going to assign ID");
                    qq = positio;
                    showDialog(NAME_LIST);
                }

                if (positio == 5)
                {
                    qq = positio;
                    System.out.println("going to start time ID");
                    showDialog(STARTTIME);
                }

                if (positio == 3)
                {
                    qq = positio;
                    System.out.println("going to date picker ID");
                    showDialog(DATE_DIALOG_ID);
                }
            }
        }) ;
        holder.editText.setOnFocusChangeListener(new OnFocusChangeListener()
        {

            public void onFocusChange(View v, boolean hasFocus)
            {
                //if(!hasFocus)
                {
                    final int positio = v.getId();
                    String conv = null;
                    final EditText edittexthold = (EditText) v;
                    final TextView textholder = (TextView) v;
                    edittexthold.setFocusable(true);

                    if (edittexthold.getText().toString().length() > 0)

                    {
                        HashMap<Integer, String> Map = new HashMap<Integer, String>();
                        Map.put(positio, edittexthold.getText().toString());

                        data.set(positio, Map);
                        System.out.println(data);
                    }

                    edittexthold.setFocusable(false);
                }
            }
        });
Jonathan
  • 20,053
  • 6
  • 63
  • 70
kunwar abhishek
  • 91
  • 2
  • 3
  • 8

1 Answers1

1

Please try this code it may help you

private class MobileArrayAdapter extends ArrayAdapter
{

     ViewHolder holder;
            private Context context;
            private ArrayList values;

            @SuppressWarnings("unchecked")
            public MobileArrayAdapter(Context context, ArrayList values)
            {

                super(context, R.layout.taskstrt, values);
                this.context = context;
                this.values = values;
                System.out.println("in mobile constructor");



            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {


                    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

         convertView = inflater.inflate(R.layout.taskstrt, parent, false);

               if (convertView == null || convertView.getTag() == null) {

                     holder = new ViewHolder();



                    holder.editText = (EditText) convertView.findViewById(R.id.editText1);
                    holder.textView = (TextView) convertView.findViewById(R.id.textView1);

         holder.textView.setText(values.get(position).toString());

                    holder.textView.setId(position);
                    holder.editText.setId(position);
                    holder.editText.setFocusable(false);
                   // holder.editText.setFocusableInTouchMode(true);

                    holder.editText.setOnClickListener(new OnClickListener() {




                        public void onClick(View v) {



                            final int positio = v.getId();
                             edittexthold = (EditText) v;
                             textholder = (TextView) v;
                             edittexthold.setFocusable(true);

                             if(edittexthold.getText().toString().length()>0)

                             {  HashMap<Integer, String> Map=new HashMap<Integer, String>();
                                    Map.put(positio, edittexthold.getText().toString());

                                    data.set(positio, Map);
                                    System.out.println(data);
                                }

                            System.out.println(positio+" this is position that is clicked");
                            if(positio==4)
                            {
                                System.out.println("going to assign ID");
                                qq=positio;
                                showDialog(NAME_LIST);


                            }

                            if(positio==5)
                            {
                                qq=positio;
                                System.out.println("going to start time ID");
                            showDialog(STARTTIME);
                            }

                            if(positio==3)
                                {
                                qq=positio;
                                System.out.println("going to date picker ID");
                                showDialog(DATE_DIALOG_ID);
                                }







                        }
                    }) ;
                    holder.editText.setOnFocusChangeListener(new OnFocusChangeListener() {

                    public void onFocusChange(View v, boolean hasFocus) 
                    {

                    //if(!hasFocus)
                        {


                        final int positio = v.getId();
                        String conv=null;
                        final EditText edittexthold = (EditText) v;
                        final TextView textholder = (TextView) v;
                        edittexthold.setFocusable(true);

                         if(edittexthold.getText().toString().length()>0)

                         {  HashMap<Integer, String> Map=new HashMap<Integer, String>();
                                Map.put(positio, edittexthold.getText().toString());

                                data.set(positio, Map);
                                System.out.println(data);
                            }

                         edittexthold.setFocusable(false);
                    }   }
                });


                    convertView.setTag(holder);

                } 
Ashwani Tyagi
  • 510
  • 1
  • 5
  • 15