title: Android - How to handle ratingBar in custom adapter?
body: <p>I have a <code>TextView</code> and <code>RatingBar</code> in <code>ListView</code>, and i want to save value of <code>RatingBar</code> on each list in <code>ListView</code>, it is possible with custom adapter??</p>
  
  <p>the code I use to do likes: </p>
  
  <p><code>PertanyaanAdapter.java</code></p>
  
  
  
  <pre class="lang-js prettyprint-override"><code>package flix.yudi.pertanyaan3;
  
  import android.app.Activity;
  import android.support.annotation.NonNull;
  import android.support.v7.app.AppCompatActivity;
  import android.util.Log;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.ArrayAdapter;
  import android.widget.RatingBar;
  import android.widget.TextView;
  
  import java.util.List;
  
  class PertanyaanAdapter extends ArrayAdapter&lt;Pertanyaan&gt; {
  
      private AppCompatActivity activity;
      private List&lt;Pertanyaan&gt; movieList;
  
      PertanyaanAdapter(AppCompatActivity context, int resource, List&lt;Pertanyaan&gt; objects) {
          super(context, resource, objects);
          this.activity = context;
          this.movieList = objects;
      }
  
      @Override
      public Pertanyaan getItem(int position) {
          return movieList.get(position);
      }
  
      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
          ViewHolder holder;
          LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
  
          if (convertView == null) {
              convertView = inflater.inflate(R.layout.item_listview, parent, false);
              holder = new ViewHolder(convertView);
              convertView.setTag(holder);
  
          } else {
              holder = (ViewHolder) convertView.getTag();
              //holder.ratingBar.getTag(position);
          }
  
          holder.ratingBar.setOnRatingBarChangeListener(onRatingChangedListener(position));
  
          holder.ratingBar.setTag(position);
          holder.ratingBar.setRating(getItem(position).getRatingStar());
          holder.movieName.setText(getItem(position).getAsk());
  
          return convertView;
      }
  
      private RatingBar.OnRatingBarChangeListener onRatingChangedListener(final int position) {
          return new RatingBar.OnRatingBarChangeListener() {
              @Override
              public void onRatingChanged(RatingBar ratingBar, float v, boolean b) {
                  Pertanyaan item = getItem(position);
                  assert item != null;
                  item.setRatingStar(v);
                  Log.i("Adapter", "star: " + v);
              }
          };
      }
  
      private static class ViewHolder {
          private RatingBar ratingBar;
          private TextView movieName;
  
          ViewHolder(View view) {
              ratingBar = (RatingBar) view.findViewById(R.id.rate_img);
              movieName = (TextView) view.findViewById(R.id.text);
          }
      }
  }
  </code></pre>
  
  <p><code>Pertanyaan.java</code></p>
  
  
  
  <pre class="lang-js prettyprint-override"><code>package flix.yudi.pertanyaan3;
  public class Pertanyaan {
  
      private float ratingStar;
      private String ask;
  
      Pertanyaan(int ratingStar, String ask) {
          this.ratingStar = ratingStar;
          this.ask = ask;
      }
  
      float getRatingStar() {
          return 0;
      }
  
      void setRatingStar(float ratingStar) {
          this.ratingStar = ratingStar;
      }
  
      public String getAsk() {
          return ask;
      }
  
  }
  </code></pre>
  
  <p><code>MainActivity.java</code></p>
  
  
  
  <pre class="lang-js prettyprint-override"><code>public class MainActivity extends AppCompatActivity {
  
      ListView listView;
      ArrayList&lt;Pertanyaan&gt; listPertanyaan;
      ArrayAdapter&lt;Pertanyaan&gt; adapter2;
      ProgressDialog pDialog;
  
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          listView = (ListView)findViewById(R.id.list_view);
          listPertanyaan = new ArrayList&lt;&gt;();
          getpertanyaan get= new getpertanyaan();
          get.execute();
          adapter2 = new PertanyaanAdapter(this, R.layout.item_listview, listPertanyaan);
          listView.setAdapter(adapter2);
      }
  
      protected void onStart() {
          super.onStart();
  
      }
  
      private class getpertanyaan extends AsyncTask&lt;Void, Void, Integer&gt; {
          ArrayList&lt;Pertanyaan&gt; list;
          protected void onPreExecute() {
              pDialog=new ProgressDialog(MainActivity.this);
              pDialog.setTitle("Nama Dosen");
              pDialog.setMessage("Menampilkan nama dosen... Mohon tunggu...!");
              pDialog.setCancelable(false);
              pDialog.show();
              super.onPreExecute();
              list = new ArrayList&lt;&gt;();
          }
  
          @Override
          protected Integer doInBackground(Void... params) {
              InputStream is = null;
              String result = "";
  
              try {
                  HttpClient httpclient = new DefaultHttpClient();
                  HttpPost httppost = new HttpPost("http://flix.16mb.com/send_data.php");
                  HttpResponse response = httpclient.execute(httppost);
                  HttpEntity entity = response.getEntity();
                  // Get our response as a String.
                  is = entity.getContent();
              } catch (IOException e) {
                  e.printStackTrace();
              }
  
              //convert response to string
              try {
                  BufferedReader reader = null;
                  if (is != null) {
                      reader = new BufferedReader(new InputStreamReader(is, "utf-8"));
                  }
                  String line;
                  if (reader != null) {
                      while ((line = reader.readLine()) != null) {
                          result += line;
                      }
                  }
                  if (is != null) {
                      is.close();
                  }
                  //result=sb.toString();
              } catch (Exception e) {
                  e.printStackTrace();
              }
              // parse json data
              try {
                  JSONArray jArray = new JSONArray(result);
                  for (int i = 0; i &lt; jArray.length(); i++) {
                      JSONObject jsonObject = jArray.getJSONObject(i);
                      list.add(new Pertanyaan(0,jsonObject.getString("ask")));
                  }
  
              } catch (JSONException e) {
                  e.printStackTrace();
              }
              return null;
          }
  
          protected void onPostExecute(Integer result) {
              if (pDialog.isShowing())
                  pDialog.dismiss();
              listPertanyaan.addAll(list);
              adapter2.notifyDataSetChanged();
          }
      }
  }
  </code></pre>
  
  <p>but when I run the app, the <code>RatingBar</code> is untouchable, just each list of <code>ListView</code> is touch however I want to tap the <code>RatingBar</code>.</p>
  
  <p>did I doing something wrong? help me please.</p>
  
  <p><strong>EDIT :</strong>
  <code>item_listview.xml</code></p>
  
  
  
  <pre class="lang-js prettyprint-override"><code>&lt;RatingBar
          android:id="@+id/rate_img"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_below="@+id/text"
          android:numStars="5"
          android:stepSize="1"
          style="@style/Widget.AppCompat.RatingBar.Indicator" /&gt;
  
      &lt;TextView
          android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textStyle="bold" /&gt;
  </code></pre>