1

I have 2 listView on the same activity on of them have a EditText in every row.

1st problem : whenever i try and write something in the EditText of a row the text either doesn't show or comes in a weird language.

2nd : when i am done with writing "which is not working" if i press the back button so the keyboard disappears the app crashes.

on the other hand if i pressed on the EditText so the keyboard appears and pressed back without writing anything it works fine..

thanks.

CustomAdapter

 public View getView(final int position, View convertView, ViewGroup parent) {
        System.out.println("getView " + position + " " + convertView);
        final OrderHolder holder;

        if (convertView == null) {
            mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            convertView = mInflater.inflate(l, null);

            holder  = new OrderHolder();

            holder.id = (TextView)convertView.findViewById(R.id.oid);
            holder.name = (TextView)convertView.findViewById(R.id.oname);
            holder.price = (TextView)convertView.findViewById(R.id.oprice);
            holder.btn = (Button) convertView.findViewById(R.id.oorder);
            holder.quantity = (TextView) convertView.findViewById(R.id.quantity);
            holder.customise = (EditText) convertView.findViewById(R.id.customize);



            convertView.setTag(holder);
        }

        else {
            holder = (OrderHolder)convertView.getTag();

        }

        holder.id.setText(getId(getItem(position)));
        holder.name.setText(getName(getItem(position)));
        holder.price.setText("£ " + getPrice(getItem(position)));
        holder.customise.setText("");

        if(pos.containsKey(position))
        {
            holder.customise.setText(pos.get(position));                 

        }

                holder.quantity.setVisibility(View.VISIBLE);


            holder.btn.setOnClickListener(new View.OnClickListener(){
                 public void onClick(View v) {

                  HashMap<String, String> map = getItem(position);


              if(v.getId() == R.id.order)
             {

                  if ( orderList.contains(getItem(position)) ){
                      System.out.println("item :" +getItem(position));
                      //holder.quantity.setText("q");
                      int foo = Integer.parseInt(map.get(TAG_QUANTITY).toString());

                      map.put(TAG_QUANTITY, "" + (foo-1));
                      if((foo-1)==0)
                      {
                          orderList.remove(getItem(position));
                      }

                  }


                  ((MyOrderAdapter)  list1.getAdapter()).notifyDataSetChanged();
                  ((MyOrderAdapter)  list11.getAdapter()).notifyDataSetChanged();

                          Float fo = Float.parseFloat(map.get(TAG_PRICE).toString());
                          Float total = Float.parseFloat(t.getText().toString());

                          //System.out.println("heeeeeeeeeeeeeere :" +fo);
                          t.setText(""+ String.format("%.2f", (total-fo)));
                  }
            }
          });
            holder.btn.setOnLongClickListener(new View.OnLongClickListener() {

                @Override
                public boolean onLongClick(View v) {
                      Float fo = Float.parseFloat((getItem(position).get(TAG_PRICE)).toString());
                      Float Quant = Float.parseFloat((getItem(position).get(TAG_QUANTITY)).toString());
                      Float total = Float.parseFloat(t.getText().toString());
                      //System.out.println("heeeeeeeeeeeeeere :" +fo);
                      orderList.remove(getItem(position));
                      t.setText(""+ String.format("%.2f", (total-(fo*Quant))));
                      ((MyOrderAdapter) list1.getAdapter()).notifyDataSetChanged();
                      ((MyOrderAdapter) list11.getAdapter()).notifyDataSetChanged();
                    return false;
                }
            });



        holder.quantity.setText(getQuant(getItem(position)));
        return convertView;
    }

LOGCAT

04-07 13:16:24.126: I/Editor(16815): setup window support handles
04-07 13:16:24.126: I/Editor(16815): setup window support handles
04-07 11:52:33.618: E/AndroidRuntime(16268): FATAL EXCEPTION: main
04-07 11:52:33.618: E/AndroidRuntime(16268): java.lang.IndexOutOfBoundsException
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.graphics.Paint.getTextRunAdvances(Paint.java:1832)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.graphics.Paint.getTextRunAdvances(Paint.java:1809)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.text.TextLine.handleText(TextLine.java:759)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.text.TextLine.handleRun(TextLine.java:910)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.text.TextLine.measureRun(TextLine.java:414)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.text.TextLine.measure(TextLine.java:293)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.text.TextLine.metrics(TextLine.java:267)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.text.Layout.getLineExtent(Layout.java:952)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.text.Layout.getLineWidth(Layout.java:918)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.TextView.desired(TextView.java:6191)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.TextView.onMeasure(TextView.java:6257)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.measure(View.java:15479)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4824)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.TableRow.measureChildBeforeLayout(TableRow.java:247)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1038)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.TableRow.onMeasure(TableRow.java:114)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.measure(View.java:15479)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4824)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.measure(View.java:15479)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.ListView.setupChild(ListView.java:1847)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.ListView.makeAndAddView(ListView.java:1762)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.ListView.fillSpecific(ListView.java:1318)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.ListView.layoutChildren(ListView.java:1633)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.AbsListView.onLayout(AbsListView.java:2296)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.layout(View.java:14061)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.layout(ViewGroup.java:4372)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1644)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.TableRow.onLayout(TableRow.java:123)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.layout(View.java:14061)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.layout(ViewGroup.java:4372)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.layout(View.java:14061)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.layout(ViewGroup.java:4372)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.layout(View.java:14061)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.layout(ViewGroup.java:4372)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.layout(View.java:14061)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.layout(ViewGroup.java:4372)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.layout(View.java:14061)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.layout(ViewGroup.java:4372)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.layout(View.java:14061)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.layout(ViewGroup.java:4372)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.layout(View.java:14061)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.layout(ViewGroup.java:4372)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.View.layout(View.java:14061)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewGroup.layout(ViewGroup.java:4372)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1984)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1805)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1105)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4462)
04-07 11:52:33.618: E/AndroidRuntime(16268):    at android.view.Choreograph
Mo Adel
  • 1,136
  • 1
  • 16
  • 29

1 Answers1

0

Are you running on SDK level 16? It may be related to this problem.

Also make sure you're not accidentally providing resource id into the TextView's setText():

holder.id.setText(getId(getItem(position)));

Without seeing your code, getId() may be returning an int, whereas you probably want to specify its result as a String:

holder.id.setText(String.valueOf(getId(getItem(position))));
Community
  • 1
  • 1
Paul Lammertsma
  • 37,593
  • 16
  • 136
  • 187
  • im returng a string with getId `public String getId(HashMap item){ return item.get(TAG_ID).toString(); }` – Mo Adel Apr 07 '13 at 12:54
  • What about `getName()` and `getQuant()`? – Paul Lammertsma Apr 07 '13 at 13:01
  • they are all returning strings, This listView was working fine until i added the editText. I have an assumption but not sure. my listView is Included from another view and it is located at the bottom of the screen when the keyboard pops up it move all the component up with. I am wondering if the may cause any problem to the listView. if it might it is? is there any fix..one more thing the whole view is on FrameLayout..not sure if all that can help – Mo Adel Apr 07 '13 at 13:53
  • Yes, indeed; upon reviewing, it appears to have nothing to do with the text contents of the TextView. I was a bit hasty. It instead seems that the dimensions of the TextView are somehow causing your woes. Perhaps the dimensions are zero? – Paul Lammertsma Apr 07 '13 at 14:09
  • Are you running on SDK level 16? [It may be related to this problem.](http://stackoverflow.com/questions/12849676/i-cant-figure-the-issue-with-a-stacktrace-error) – Paul Lammertsma Apr 07 '13 at 14:16
  • i think it is the same problem, regarding SDK is level 16 yes – Mo Adel Apr 07 '13 at 14:50
  • You may want to try one of the workarounds suggested either [in this answer](http://stackoverflow.com/a/12849770/154306) or [from the comments to issue #35466](https://code.google.com/p/android/issues/detail?id=35466). I'm curious if it indeed resolves your problem, as your stack trace appears doesn't appear to be related to spannables. – Paul Lammertsma Apr 07 '13 at 15:06
  • 1
    actually to add there was a part in my logcat that show spannable.StringBuilder cannot be zero – Mo Adel Apr 07 '13 at 16:23
  • 1
    i found the fix. in that answer [link](http://stackoverflow.com/a/13696084/2040750) it was the EditText input that had the problem after i changed it to `android:inputType="textNoSuggestions"` – Mo Adel Apr 07 '13 at 20:38
  • Great! Thanks for accepting my answer, but you should really post your comment as an answer and accept that. – Paul Lammertsma Apr 08 '13 at 07:58