title: GetView in BaseAdapter Calling Infinte Time
body: <p>In app i am loading data from Url and displaying it in list view.Total Item which I retrieve from Url is 5 Item, Which are displayed successfully in listview.But getView() runs infinite times at backend.<strong>IT keeps on calling till activity is alive</strong> .I am unable to figure it why it is calling so much time.
  My code is</p>
  
  <pre><code>public class asasa  extends Activity  {
      //ListView listView;
      Intent intent;
      public int currentimageindex=0;
      private ProgressDialog pDialog;
  
      //Class Declartion DataHolder
      DataHolder obj;
      Timer timer;
      TimerTask task;
      ImageView slidingimage;
      private int[] IMAGE_IDS = {
              R.drawable.myno, R.drawable.cock, R.drawable.item,
              R.drawable.ketchup,R.drawable.oil,R.drawable.pan
      };
      //ProgressDialog progressDialog;
  
  
      // Creating JSON Parser object
      JSONParser jParser = new JSONParser();
  
  
      static final String URL = "http://10.0.2.2/android_connect/get_all_products.php";
  
      private static final String TAG_SUCCESS = "success";
      private static final String TAG_PRODUCTS = "products";
  
      private static final String TAG_NAME = "name";           
      private static final String TAG_Description = "description";
      private static final String TAG_URL = "url";
      private static final String TAG_Price = "price";
  
  
      LazyAdapter adapter;
      // flag for Internet connection status
      Boolean isInternetPresent = false;
  
      // products JSONArray
      JSONArray products = null;
  
      // Connection detector class
      ConnectionDetector cd;
  
      String  ITEMTITLE ="HasMapValue";
  
  
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          cd = new ConnectionDetector(getApplicationContext());
  
          // get Internet status
          isInternetPresent = cd.isConnectingToInternet();
          if (isInternetPresent) {
  
              LoadAllProducts il = new LoadAllProducts();
              il.execute(URL);
          }
          else
          {
              // Internet connection is not present
              // Ask user to connect to Internet
              Toast.makeText(asasa.this, "No Internet Connection You don't have internet connection.", Toast.LENGTH_LONG).show();
          }
  
  
      }
      public void longToast(CharSequence message) {
          Toast.makeText(this, message, Toast.LENGTH_LONG).show();
      }
  
  
  
  
      public class LazyAdapter extends BaseAdapter {
  
          private Activity activity;
          private  LayoutInflater inflater=null;
          private ArrayList&lt;HashMap&lt;String, Object&gt;&gt; data;
          int i=0;
          public LazyAdapter(Activity a, ArrayList&lt;HashMap&lt;String, Object&gt;&gt; d) {
              activity = a;
              data=d;
              inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          }
  
          public int getCount() {
              return data.size();
          }
  
          public Object getItem(int position) {
              return position;
          }
  
          public long getItemId(int position) {
              return position;
          }
  
          public View getView(int position, View convertView, ViewGroup parent) {
              View vi=convertView;
              if(convertView==null)
                  vi = inflater.inflate(R.layout.list_row, null);
  
              TextView title = (TextView)vi.findViewById(R.id.title); // title
              TextView artist = (TextView)vi.findViewById(R.id.artist); // artist name
              TextView duration = (TextView)vi.findViewById(R.id.duration); // duration
              ImageView imageview=(ImageView) vi.findViewById(R.id.list_image);
  
              HashMap&lt;String, Object&gt; song = new HashMap&lt;String, Object&gt;();
              song = data.get(position);
  
              DataHolder objj=new DataHolder();
              objj=(DataHolder) song.get(ITEMTITLE);
  
              Log.i("iiiiii  "," " +i++);
  
              Log.i("objj.GetName()  ",objj.GetName());
              Log.i("objj.GetDescription()  ",objj.GetDescription());
              Log.i("objj.GetPrice()  ",objj.GetPrice());
  
  
              title.setText(objj.GetName());
              artist.setText(objj.GetDescription());
              duration.setText(objj.GetPrice());
              imageview.setImageBitmap(objj.Getimage());
  
  
  
              return vi;
          }
      }
  
  
  
  
  
  
      class LoadAllProducts extends AsyncTask&lt;String, String, String&gt; {
          // creating new HashMap
          ArrayList&lt;HashMap&lt;String, Object&gt;&gt; productsList=new ArrayList&lt;HashMap&lt;String,Object&gt;&gt;();
          Bitmap decodedByte;
          /**
           * Before starting background thread Show Progress Dialog
           * */
          @Override
          protected void onPreExecute() {
              super.onPreExecute();
              pDialog = new ProgressDialog(asasa.this);
              pDialog.setMessage("Loading products. Please wait...");
              pDialog.setIndeterminate(false);
              pDialog.setCancelable(false);
              pDialog.show();
          }
  
          /**
           * getting All products from url
           * */
          protected String doInBackground(String... args) {
              // Building Parameters
              List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
  
              // getting JSON string from URL
              JSONObject json = jParser.makeHttpRequest(URL, "GET", params);
  
              try {
                  // Checking for SUCCESS TAG
                  int success = json.getInt(TAG_SUCCESS);
  
                  if (success == 1) {
                      // products found
                      // Getting Array of Products
                      products = json.getJSONArray(TAG_PRODUCTS);
                      Log.i("products  ",products.toString());
                      // looping through All Products
                      Log.i("LENGTHHHH  "," "+products.length());
                      for (int i = 0; i &lt; products.length(); i++) {
                          JSONObject c = products.getJSONObject(i);
                          Log.i("ccccccccc  ",c.toString());
                          // Storing each json item in variable
                          //  String id = c.getString(TAG_PID);
                          String name = c.getString(TAG_NAME);
                          Log.i("name::",name);
  
                          String description = c.getString(TAG_Description);
                          Log.i("description::",description);
  
                          String price = c.getString(TAG_Price);
                          Log.i("price",price);
  
                          byte[] decodedString = Base64.decode(c.getString(TAG_URL), Base64.DEFAULT);
                          decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
  
                          obj=new DataHolder();
                          obj.setData(name, description, price, decodedByte);
  
  
                          HashMap&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;();
  
  
  
                          map.put(ITEMTITLE, obj);
  
                          productsList.add(map);
  
                      }
                  } else {
                      // no products found
                  }
              } catch (JSONException e) {
                  e.printStackTrace();
              }
  
              return null;
          }
  
          /**
           * After completing background task Dismiss the progress dialog
           * **/
          protected void onPostExecute(String file_url) {
  
              ListView list;
  
              // dismiss the dialog after getting all products
              list=(ListView)findViewById(R.id.list);
  
              adapter=new LazyAdapter(asasa.this, productsList);        
              list.setAdapter(adapter);
  
  
              // Click event for single list row
              list.setOnItemClickListener(new OnItemClickListener() {
  
                  public void onItemClick(AdapterView&lt;?&gt; parent, View view,
                          int position, long id) {
                                  }
              });     
  
              if (pDialog.isShowing()) {
                  pDialog.dismiss();
                  }
  
  
          }
  
      }
      public void onPause()
      {
          super.onPause();
  
  
      }
  
  
      public class DataHolder 
  
      {
          String Name;
          String Description;
          String Price;
          Bitmap image;
  
          public void setData(String Name,String Descipton,String Price,Bitmap iamage)
          {
              this.Name=Name;
              this.Description=Descipton;
              this.Price=Price;
              this.image=iamage;
          }
  
          public String GetName()
          {return Name;}
          public String GetDescription()
          {return Description;}
          public String GetPrice()
          {return Price;}
          public Bitmap Getimage()
  
              {return image;}
  
          }
      }
  </code></pre>
  
  <p>And getview()</p>
  
  <pre><code>    public View getView(int position, View convertView, ViewGroup parent) {
          View vi=convertView;
          if(convertView==null)
              vi = inflater.inflate(R.layout.list_row, null);
  
          TextView title = (TextView)vi.findViewById(R.id.title); // title
          TextView artist = (TextView)vi.findViewById(R.id.artist); // artist name
          TextView duration = (TextView)vi.findViewById(R.id.duration); // duration
          ImageView imageview=(ImageView) vi.findViewById(R.id.list_image);
  
          HashMap&lt;String, Object&gt; song = new HashMap&lt;String, Object&gt;();
          song = data.get(position);
  
          DataHolder objj=new DataHolder();
          objj=(DataHolder) song.get(ITEMTITLE);
  
          Log.i("iiiiii  "," " +i++);
  
          Log.i("objj.GetName()  ",objj.GetName());
          Log.i("objj.GetDescription()  ",objj.GetDescription());
          Log.i("objj.GetPrice()  ",objj.GetPrice());
  
  
          title.setText(objj.GetName());
          artist.setText(objj.GetDescription());
          duration.setText(objj.GetPrice());
          imageview.setImageBitmap(objj.Getimage());
  
  
  
          return vi;
      }
  </code></pre>
  
  <p>XML</p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/background" &gt;
  
  &lt;include layout="@layout/footer" /&gt;
  
  &lt;LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="460dp"
      android:layout_alignParentLeft="true"
      android:layout_alignParentTop="true"
      android:background="@drawable/background2"
      android:minHeight="400dp"
      android:orientation="vertical" &gt;
  
      &lt;LinearLayout
          android:layout_width="match_parent"
          android:layout_height="50dp"
          android:background="@drawable/bar" &gt;
  
          &lt;Button
              android:id="@+id/back"
              android:layout_width="50dp"
              android:layout_height="50dp"
              android:background="@drawable/left" /&gt;
      &lt;/LinearLayout&gt;
  
      &lt;LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="vertical" &gt;
  
          &lt;ImageView
              android:id="@+id/ImageView3_Left"
              android:layout_width="200dp"
              android:layout_height="150dp"
              android:layout_gravity="center_vertical|center_horizontal"
              android:layout_marginTop="20dp" &gt;
          &lt;/ImageView&gt;
  
  
          &lt;LinearLayout
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_margin="10dp"
              android:background="@drawable/textarea"
              android:orientation="vertical" &gt;
  
              &lt;ListView
                  android:id="@+id/list"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:divider="#b5b5b5"
                  android:dividerHeight="1dp"
                  android:listSelector="@drawable/list_selector" /&gt;
          &lt;/LinearLayout&gt;
      &lt;/LinearLayout&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p></p>