title: Android listview header
body: <p>i have an app that is showing data in listview ,but i want first row to be inflated by diferent layout , and i did that but since there is gona be a big number of listitems , i want to optimize listview and there is issue. i cant optimize listview when iam filling listview on that way , so how can i put content that should go in fist row inside listview header witch is inflated by some layout ,here is the code of Adapter</p>
  
  <pre><code>public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      requestWindowFeature(Window.FEATURE_NO_TITLE);
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
      setContentView(R.layout.main);
  
      LinearLayout content = (LinearLayout) findViewById(R.id.content);
      LinearLayout refLayout = (LinearLayout) findViewById(R.id.refLayout);
  
      refLayout.setVisibility(View.GONE);
  
      mBtnNaslovnica = (Button) findViewById(R.id.mBtnNaslovnica);
      mBtnNaslovnica.setSelected(true);
      TextView txtView=(TextView) findViewById(R.id.scroller);
  txtView.setSelected(true);
      loadPage();
      ImageButton mBtnRefresh = (ImageButton) findViewById(R.id.btnRefresh);
      mBtnRefresh.setOnClickListener(new View.OnClickListener() {
  
          @Override
          public void onClick(View v) {
              // TODO Auto-generated method stub
  
              new LoadingTask().execute(URL);
          }
      });
  
  }
  
  public void loadPage(){
  
      ArrayList&lt;HashMap&lt;String, String&gt;&gt; homeList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
  
  
  
          JSONObject jsonobj;
          try {
              jsonobj = new JSONObject(getIntent().getStringExtra("json"));
              JSONObject datajson = jsonobj.getJSONObject("data");
              JSONArray news = datajson.getJSONArray(TAG_NEWS);
              JSONArray actual = datajson.getJSONArray("actual");
              for(int i = 0; i &lt; news.length(); i++){
                  JSONObject c = news.getJSONObject(i);
  
                  // Storing each json item in variable
                  String id = c.getString(TAG_ID);
                  String title = c.getString(TAG_TITLE);
                  String story = c.getString(TAG_STORY);
                  String shorten = c.getString(TAG_SH_STORY);
                  String author = c.getString(TAG_AUTHOR);
                  String datetime = c.getString(TAG_DATETIME);
                  String img = c.getString(TAG_IMG);
                  String big_img = c.getString(TAG_BIG_IMG);
  
  
  
                  // creating new HashMap
                  HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
  
                  // adding each child node to HashMap key =&gt; value
                  map.put(TAG_ID, id);
                  map.put(TAG_TITLE, title);
                  map.put(TAG_STORY, story);
                  map.put(TAG_IMG, img);
                  map.put(TAG_BIG_IMG, big_img);
                  map.put(TAG_DATETIME, datetime);
                  map.put(TAG_AUTHOR, author);
  
                  // adding HashList to ArrayList
                  homeList.add(map);}
              for(int i = 0; i &lt; actual.length(); i++){
                  JSONObject c = actual.getJSONObject(i);
  
                  // Storing each json item in variable
                  String id = c.getString(TAG_ACT_TIME);
                  String body = c.getString(TAG_ACT_BODY);
                  String anews = " | "+ id+ " " + body;
                  String cur_anews = ((TextView) findViewById(R.id.scroller)).getText().toString();
                  String complete = anews + cur_anews;
                  TextView anewstv = (TextView) findViewById(R.id.scroller);
                  anewstv.setText(complete);
  
                  }
          } catch (JSONException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
  
  
  
  
  
      list=(ListView)findViewById(R.id.list);
  
      // Getting adapter by passing xml data ArrayList
      adapter=new LazyAdapter(this, homeList);        
      list.setAdapter(adapter);
  
  
      // Click event for single list row
      list.setOnItemClickListener(new OnItemClickListener() {
  
          @Override
          public void onItemClick(AdapterView&lt;?&gt; parent, View view,int position, long id) {
              String cur_title = ((TextView) view.findViewById(R.id.title)).getText().toString();
              String cur_story = ((TextView) view.findViewById(R.id.einfo2)).getText().toString();
              String cur_author = ((TextView) view.findViewById(R.id.einfo1)).getText().toString();
              String cur_datetime  = ((TextView) view.findViewById(R.id.tVdatetime)).getText().toString();
              String cur_actual  = ((TextView) findViewById(R.id.scroller)).getText().toString();
              ImageView cur_img = (ImageView) view.findViewById(R.id.list_image);
              String cur_img_url = (String) cur_img.getTag();
  
              Intent i = new Intent("com.example.androidhive.CURENTNEWS");
              i.putExtra("CUR_TITLE", cur_title);
              i.putExtra("CUR_STORY", cur_story);
              i.putExtra("CUR_AUTHOR", cur_author);
              i.putExtra("CUR_DATETIME", cur_datetime);
              i.putExtra("CUR_IMG_URL", cur_img_url);
              i.putExtra("CUR_ACTUAL", cur_actual);
              startActivity(i);
          }
      });     
  }   
  
  public void reloadPage(String jsonstring){
      ArrayList&lt;HashMap&lt;String, String&gt;&gt; homeList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
  
  
  
      JSONObject jsonobj;
      try {
          jsonobj = new JSONObject(jsonstring);
          JSONObject datajson = jsonobj.getJSONObject("data");
          JSONArray news = datajson.getJSONArray(TAG_NEWS);
          JSONArray actual = datajson.getJSONArray("actual");
          for(int i = 0; i &lt; news.length(); i++){
              JSONObject c = news.getJSONObject(i);
  
              // Storing each json item in variable
              String id = c.getString(TAG_ID);
              String title = c.getString(TAG_TITLE);
              String story = c.getString(TAG_STORY);
              String shorten = c.getString(TAG_SH_STORY);
              String author = c.getString(TAG_AUTHOR);
              String datetime = c.getString(TAG_DATETIME);
              String img = c.getString(TAG_IMG);
              String big_img = c.getString(TAG_BIG_IMG);
  
  
              // creating new HashMap
              HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
  
              // adding each child node to HashMap key =&gt; value
              map.put(TAG_ID, id);
              map.put(TAG_TITLE, title);
              map.put(TAG_STORY, story);
              map.put(TAG_IMG, img);
              map.put(TAG_BIG_IMG, big_img);
              map.put(TAG_DATETIME, datetime);
              map.put(TAG_AUTHOR, author);
  
              // adding HashList to ArrayList
              homeList.add(map);}
          for(int i = 0; i &lt; actual.length(); i++){
              JSONObject c = actual.getJSONObject(i);
  
              // Storing each json item in variable
              String id = c.getString(TAG_ACT_TIME);
              String body = c.getString(TAG_ACT_BODY);
              String anews = " | "+ id+ " " + body;
              String cur_anews = ((TextView) findViewById(R.id.scroller)).getText().toString();
              String complete = anews + cur_anews;
              TextView anewstv = (TextView) findViewById(R.id.scroller);
              anewstv.setText(complete);
  
              }
      } catch (JSONException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  
  
  
  
  
  
  list=(ListView)findViewById(R.id.list);
  
  // Getting adapter by passing xml data ArrayList
  adapter=new LazyAdapter(this, homeList);        
  list.setAdapter(adapter);
  
  
  // Click event for single list row
  list.setOnItemClickListener(new OnItemClickListener() {
  
      @Override
      public void onItemClick(AdapterView&lt;?&gt; parent, View view,int position, long id) {
          String cur_title = ((TextView) view.findViewById(R.id.title)).getText().toString();
          String cur_story = ((TextView) view.findViewById(R.id.einfo2)).getText().toString();
          String cur_author = ((TextView) view.findViewById(R.id.einfo1)).getText().toString();
          String cur_datetime  = ((TextView) view.findViewById(R.id.tVdatetime)).getText().toString();
          String cur_actual  = ((TextView) findViewById(R.id.scroller)).getText().toString();
          ImageView cur_img = (ImageView) view.findViewById(R.id.list_image);
          String cur_img_url = (String) cur_img.getTag();
  
          Intent i = new Intent("com.example.androidhive.CURENTNEWS");
          i.putExtra("CUR_TITLE", cur_title);
          i.putExtra("CUR_STORY", cur_story);
          i.putExtra("CUR_AUTHOR", cur_author);
          i.putExtra("CUR_DATETIME", cur_datetime);
          i.putExtra("CUR_IMG_URL", cur_img_url);
          i.putExtra("CUR_ACTUAL", cur_actual);
          startActivity(i);
      }
  });
  }
  
  public void startNewActivity(){
  
  }
  public class LoadingTask extends AsyncTask&lt;String, Object, Object&gt;{
      XMLParser parser = new XMLParser();
      JSONParser jParser = new JSONParser();
      LinearLayout content = (LinearLayout) findViewById(R.id.content);
      LinearLayout refLayout = (LinearLayout) findViewById(R.id.refLayout);
  
      protected void onPreExecute(){
          content.setClickable(false);
          refLayout.setVisibility(View.VISIBLE);
      }
  
      @Override
      protected Object doInBackground(String... params) {
          // TODO Auto-generated method stub
  
  
          String URL = params[0];
          JSONObject json = jParser.getJSONFromUrl(URL);
          //String xml = parser.getXmlFromUrl(URL); // getting XML from URL
           // getting DOM element
          return json;
      }
  
      protected void onPostExecute(Object result){
          String json;
          json = result.toString();
          reloadPage(json);
          refLayout.setVisibility(View.GONE);
      }
  
  
  }
  
  
  
  }
  </code></pre>