Change ImageView BackgroundResource to listview onItemSelected Android

I use activeAdapter to populate mylistview as shown below:

0
source share
2 answers

You can try something like this. I have cleaned and simplified your code.

public class EfficientAdapter extends BaseAdapter { private Activity mActivity; private ArrayList<SearchTracks> mSearchTracks; private ResultatMultiple mResultatMultiple; private int mSelectedPosition; public EfficientAdapter(Activity activity, ArrayList<SearchTracks> searchTracks) { mActivity = activity; mSearchTracks = searchTracks; } public EfficientAdapter(ResultatMultiple resultatMultiple){ mResultatMultiple = resultatMultiple ; } public void setSelectedPosition(int position) { mSelectedPosition = position; } @Override public int getCount() { return mSearchTracks.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View view = convertView; ViewHolder holder = null; if(convertView == null) { LayoutInflater inflater = (LayoutInflater)mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.ecran_multiple_row, null); holder = new ViewHolder(); holder.indexTextView = (TextView)view.findViewById(R.id.txIndex); holder.titleTextView = (TextView)view.findViewById(R.id.txSTitle); holder.buttonOnOffImageView = (ImageView)view.findViewById(R.id.btOnOFF); view.setTag(holder); }else { holder = (ViewHolder)view.getTag(); } int index = position + 1; holder.indexTextView.setText((index <= 9 ? "0" : "") + Integer.toString(index)); holder.titleTextView.setText(mSearchTracks.get(position).getTitle()); if(position % 2 == 0) { view.setBackgroundResource(R.drawable.listview_selector_odd); }else { view.setBackgroundResource(R.drawable.listview_selector_even); } if(mSearchTracks.size() == 1 || position == mSelectedPosition) { holder.buttonOnOffImageView.setBackgroundResource(R.drawable.air_radio_button_rouge); }else { holder.buttonOnOffImageView.setBackgroundResource(R.drawable.air_deezer_check); } return view; } private class ViewHolder { public TextView indexTextView; public TextView titleTextView; public ImageView buttonOnOffImageView; } } 

Now in your onClick listener you can call listAdapter.setSelectedPosition(position); and then listAdapter.notifyDataSetChanged(); to reload the table.

0
source

What you can do is use setTag() and getTag() to maintain the scroll position and check that your ImageView of the ListView row does not change the resource.

Inside your getView() adapter, use the class

 vi.setTag(R.id.btOnOFF, holder.btOnOFF); 

And then enter it inside onItemClick() using getTag()

 ImageView imgview = (ImageView) view.getTag(R.id.btOnOFF); imgview.setBackgroundResource(R.drawable.air_radio_button_rouge); 

For more information, you can check my message.

+2
source

All Articles