Android List Title

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); } } } 
+8
android listview header adapter
source share
2 answers

If I got your point, you can go with two approaches:

  • Add headerView to the list. It is simple how to inflate your look and pass it the addHeaderView(View) your list. Note: you must add this view before configuring the adapter or throw an exception.

  • However, since your "header" represents the same data as all other elements, but has a different layout, I suggest not using the header here. Instead, try implementing getItemViewType() in your adapter. http://developer.android.com/reference/android/widget/BaseAdapter.html#getItemViewType(int ) If you do this, you will have the opportunity to check which type of layout will return in the getView() method. And Android will take care to optimize and reuse your inflated views for you, so you can be sure that the convertView passed to your getView will have the correct type and layout.

Please let me know if I explain in more detail.

+18
source share

You can do it as follows:

 ... convertView.setOnClickListener(new OnItemClick(position)); ... public class OnItemClick implements OnClickListener { private final int index; public OnItemClick(int _index) { this.index = _index; } @Override public void onClick(View v) { //dosomething } } 
0
source share

All Articles