奇怪的问题,片段中的Listview在打开导航抽屉时会保留所选项目

时间:2014-12-22 08:11:26

标签: android listview android-fragments android-listview navigation-drawer

我知道这是一个非常奇怪的问题,但仍然无法摆脱它,我有一个片段HomeFragment,其中包含一个Customized Listview,当一个项目被cliked,Listview项目突出显示,所有这一切工作完美但是当我从Listview中选择一个项目并打开Navigarion抽屉,无论如何,HomeFragment的ListView离开选择,我不知道我在哪里做错了,请帮忙 这是适配器类

/* VIDEO LIST ADAPTER CLASS */
public class VideoListAdapter extends BaseAdapter {
    private Context context;
    int position;
    private ArrayList<VideoListBean> adapterVideoList;
    private ArrayList<VideoListBean> arraylist;

    public VideoListAdapter(Context context,
            ArrayList<VideoListBean> videoList) {
        this.context = context;
        this.adapterVideoList = videoList;
        this.arraylist = new ArrayList<VideoListBean>();
        this.arraylist.addAll(adapterVideoList);
    }

    @Override
    public int getCount() {
        return adapterVideoList.size();
    }

    @Override
    public VideoListBean getItem(int position) {
        return adapterVideoList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    class ViewHolderItem {
        ImageView videothumb;
        TextView videotitle;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolderItem viewHolder = null;
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater) context
                    .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(
                    R.layout.homevideolist_list_item, parent, false);
            viewHolder = new ViewHolderItem();

            viewHolder.videothumb = (ImageView) convertView
                    .findViewById(R.id.homevideoThumb);
            viewHolder.videotitle = (TextView) convertView
                    .findViewById(R.id.homevideoTitle);

            convertView.setTag(viewHolder);
            convertView.setTag(R.id.homevideoThumb, viewHolder.videothumb);
            convertView.setTag(R.id.homevideoTitle, viewHolder.videotitle);
        } else {
            viewHolder = (ViewHolderItem) convertView.getTag();
        }
        viewHolder.videothumb.setTag(position);
        viewHolder.videotitle.setTag(position);
        if (adapterVideoList.get(position).getTitle().equals(null)
                || adapterVideoList.get(position).getTitle().equals("")
                || adapterVideoList.get(position).getTitle().equals("null")) {
            if (adapterVideoList.get(position).getLink()
                    .contains("dailymotion")) {
                viewHolder.videotitle.setText("Dailymotion Video");
                videoList.get(position).setTitle("Dailymotion Video");
            } else if (adapterVideoList.get(position).getLink()
                    .contains("youtube")) {
                viewHolder.videotitle.setText("Youtube Video");
                videoList.get(position).setTitle("Youtube Video");
            } else if (adapterVideoList.get(position).getLink()
                    .contains("rtmp")) {
                viewHolder.videotitle.setText("RTMP Stream");
                videoList.get(position).setTitle("RTMP Stream");
            } else if (adapterVideoList.get(position).getLink()
                    .contains(".mp4")
                    || adapterVideoList.get(position).getLink()
                            .contains(".3gp")
                    || adapterVideoList.get(position).getLink()
                            .contains(".m4a")
                    || adapterVideoList.get(position).getLink()
                            .contains(".mov")
                    || adapterVideoList.get(position).getLink()
                            .contains(".m4v")) {
                viewHolder.videotitle.setText("Video");
                videoList.get(position).setTitle("Video");
            }
        } else {
            viewHolder.videotitle.setText(adapterVideoList.get(position)
                    .getTitle()
                    + "\n"
                    + "\n"
                    + videoList.get(position).getDuration());

        }
        if (adapterVideoList.get(position).getLink().contains("rtmp://")) {
            viewHolder.videotitle.setText(adapterVideoList.get(position)
                    .getTitle());

        }
        if (adapterVideoList.get(position).getImage().isEmpty()) {
            try {
                Picasso.with(context).load(R.drawable.no_image_available)
                        .into(viewHolder.videothumb);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        } else {
            Picasso.with(context)
                    .load(adapterVideoList.get(position).getImage())
                    .into(viewHolder.videothumb);
        }
        System.out.println("Selected positon getview method--->"
                + selectedPosition);
        if (selectedPosition == position) {
            convertView.setBackgroundColor(Color.parseColor("#35113b"));
            Drawable d = convertView.getBackground();
            d.setAlpha(110);
        } else {
            convertView.setBackgroundColor(Color.TRANSPARENT);
        }
        return convertView;
    }

    public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        adapterVideoList.clear();
        if (charText.length() == 0) {
            adapterVideoList.addAll(arraylist);
        } else {
            for (VideoListBean wp : arraylist) {
                if (wp.getTitle().toLowerCase(Locale.getDefault())
                        .contains(charText)) {
                    adapterVideoList.add(wp);
                }
            }
        }
        notifyDataSetChanged();
    }

}

1 个答案:

答案 0 :(得分:0)

在您的NavigationDrawer代码中添加以下内容:

        ...
        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);

            yourListView.clearChoices(); //Clear any choices previously set

            ...

        }