What you do will not even change the view of the ListView, you are inflating an unknown view.
Decision:
create a method in your adapter to set the position of the selected item:
public void selectedItem(int position) { this.position = position;
in your getView inflate the view when the position is equal to the position of the click position
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); if (convertView == null) { convertView = mInflater.inflate(R.layout.listitem_news, null); holder = new ViewHolder(); holder.title = (TextView) convertView.findViewById(R.id.title); holder.image = (ImageView) convertView.findViewById(R.id.imageView1); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } NewsData news = items.get(position); holder.title.setText(news.getTitle()); new DownloadImageTask(holder.image).execute(news.getImgUrl()); if(this.position == position) { view2 = mInflater.inflate(R.layout.listitem_news_selected, null); TextView info = (TextView) view2.findViewById(R.id.info); info.setText(news.getInfo()); return view2; } return convertView; }
Using it in onItemClick
NewsListAdapter adapter = new NewsListAdapter(this, news); newsListView.setAdapter(adapter ); newsListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { adapter.selectedItem(position); adapter.notifyDataSetChange(); } });
always has a reference/object for your adapter to refresh the ViewView list when you click on it.
source share