I have an application that displays data in a listview, but I want the first row to be inflated in different locations, and I did it, but since there are a large number of lists, I want to optimize listview, and there is a question. I canβt optimize the listview when iam populates the listview this way, so how can I put the content that should go in the cam line inside the listview header, itβs overpriced with some layout, here is the adapter 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<HashMap<String, String>> homeList = new ArrayList<HashMap<String, String>>(); 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 < 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<String, String> map = new HashMap<String, String>(); // adding each child node to HashMap key => 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 < 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<?> 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<HashMap<String, String>> homeList = new ArrayList<HashMap<String, String>>(); 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 < 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<String, String> map = new HashMap<String, String>(); // adding each child node to HashMap key => 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 < 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<?> 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<String, Object, Object>{ 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); } } }