改变ImageView的BackgroundResource在列表视图onItemSelected的Andr​​oid [英] Change ImageView BackgroundResource in listview onItemSelected Android

查看:120
本文介绍了改变ImageView的BackgroundResource在列表视图onItemSelected的Andr​​oid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用efficientAdapter来填充mylistview如下图所示:

I use an efficientAdapter to populate mylistview as shown below:

推荐答案

您可以尝试这样的事情。我清理和简化您的code。

You can try something like this. I cleaned up 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;
    }
}

现在在你的onClick监听器就可以调用 listAdapter.setSelectedPosition(位置); 然后 listAdapter.notifyDataSetChanged(); 来重新加载表。

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

这篇关于改变ImageView的BackgroundResource在列表视图onItemSelected的Andr​​oid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆