首页 > 解决方案 > 如果 Prev Data 与 Listview 中的当前数据相同,则隐藏 textview

问题描述

我在我的自定义列表视图中显示数据下面有一个代码

final List<Map<String, String>> data1 = new ArrayList<Map<String, String>>();
while (data.moveToNext()) {
    Map<String, String> datum = new HashMap<String, String>(5);
    datum.put("Name", data.getString(0));
    datum.put("Remarks", data.getString(2));
    datum.put("Date", data.getString(3));
    datum.put("Others", data.getString(4));
    data1.add(datum);
}
adapter = new SimpleAdapter(getActivity(), data1,
        R.layout.listview_plan,
        new String[]{"Name", "Remarks", "Date", "Others"},
        new int[]{R.id.list_name,
                R.id.list_remarks,
                R.id.list_date, R.id.list_others}){
    @Override
    public View getView (int position, View convertView, ViewGroup parent) {
        View v  = super.getView(position, convertView, parent);
        return v;
    }
};

listView.setAdapter(adapter);

我调用了 textview R.id.list_date,它显示日期值,我的数据按日期排序。R.id.list_date我的问题是,如果 prev 中的数据与当前数据相同,我该如何隐藏

标签: androidandroid-studio

解决方案


尝试这个:

        adapter = new SimpleAdapter(getActivity(), data1,
            R.layout.listview_plan,
            new String[]{"Name", "Remarks", "Date", "Others"},
            new int[]{R.id.list_name,
                    R.id.list_remarks,
                    R.id.list_date, R.id.list_others}){

        String previousDate = "";

        @Override
        public View getView (int position, View convertView, ViewGroup parent) {
            View v  = super.getView(position, convertView, parent);

            TextView tvDate = v.findViewById(R.id.list_date);
            String currentDate = ((Map<String, String>)getItem(position)).get("Date");
            if (currentDate != null){
                if (currentDate.equals(previousDate)) tvDate.setVisibility(View.INVISIBLE);
                else tvDate.setVisibility(View.VISIBLE);
                previousDate = currentDate;
            }

            return v;
        }
    };

希望有帮助!


推荐阅读