title: Update textView from an item in a custom listView Android
body: <p>I have a custom listView with a textView, editText and a Button on a row. The listView is created with an adapter.<br>
  I want to update the textView with the value entered in editText when I press the button.
  I want to do this without refreshing the entire list.<br>
  Any ideea how can I update only one row from the list?<br>
  Thanks!</p>
  
  <p>To be more clear I'll provide the code:  </p>
  
  <p>private static class EfficientAdapter extends BaseAdapter {
          private LayoutInflater mInflater;
          Context myContext;</p>
  
  <pre><code>    public EfficientAdapter(Context context) {
          mInflater = LayoutInflater.from(context);
          myContext = context;
      }
  
      public int getCount() {
          return nameList.length;
      }
  
      public Object getItem(int position) {
          return position;
      }
  
      public long getItemId(int position) {
          return position;
      }
  
      public View getView(final int position, View convertView,
              ViewGroup parent) {
          final ViewHolder holder;
          if (convertView == null) {
              convertView = mInflater.inflate(R.layout.travelpassengers_item,
                      null);
              holder = new ViewHolder();              
              holder.ratingTv = (TextView) convertView
                      .findViewById(R.id.tvTPRating);             
  
              holder.rateBtn = (Button) convertView
                      .findViewById(R.id.btnTPRate);
              holder.plusBtn = (Button) convertView
                      .findViewById(R.id.btnPlus);
              holder.minusBtn = (Button) convertView
                      .findViewById(R.id.btnMinus);
              holder.rateEt = (EditText) convertView
                      .findViewById(R.id.etTPRating); 
          } else {
              holder = (ViewHolder) convertView.getTag();
          }
  
          holder.ratingTv.setText(rating[position] + "/10");
  
          holder.callBtn.setTag(phoneList[position]);
  
          holder.ratingBtn.setTag(ids[position]);
          holder.ratingDisableBtn.setTag(numberRates[position]);
          holder.ratingTv.setTag(rating[position]);
          holder.rateEt.setTag(position);         
  
          holder.rateBtn.setOnClickListener(new View.OnClickListener() {
  
              public void onClick(View v) {
                  // TODO Auto-generated method stub                  
                          String id = holder.ratingBtn.getTag().toString();
                          int position = Integer.parseInt(holder.rateEt
                                  .getTag().toString());
                          double oldRate = Double
                                  .parseDouble(rating[position]);
                          int number = numberRates[position];
                          double newRate = Double.parseDouble(holder.rateEt
                                  .getText().toString());
  
                          DecimalFormat oneDigit = new DecimalFormat(
                                  "#,##0.0");
                          number++;
                          double avg = (oldRate + newRate) / number;
                          newRate = Double.valueOf(oneDigit.format(avg));
                      // I want to put the value from newRate in the holder.ratingTv on right position without updating entire listView.                  
  
                  }
              }
          });
  
          holder.plusBtn.setOnClickListener(new View.OnClickListener() {
  
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  int rate = Integer.parseInt(holder.rateEt.getText()
                          .toString());
                  if (rate &lt; 10) {
                      rate++;     
              holder.rateEt.setText(Integer.toString(rate));
                  }
              }
          });
  
          holder.minusBtn.setOnClickListener(new View.OnClickListener() {
  
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  int rate = Integer.parseInt(holder.rateEt.getText()
                          .toString());
                  if (rate &gt; 0) {
                      rate--;         
          holder.rateEt.setText(Integer.toString(rate));
                  }
              }
          });
  
          return convertView;
      }
  
      static class ViewHolder {           
          public TextView  ratingTv;      
          public Button minusBtn, plusBtn;
          public EditText rateEt;
          public Button rateBtn;          
      }
  }
  </code></pre>