如何在listview项目中设置gridview并使用uniq posion单击每个网格项目并单击evant

时间:2015-12-08 11:22:12

标签: android android-layout listview gridview

我想用图像网格日期明智地查看列表视图。首先获取图像的日期列表,然后获取特定日期明智图像列表的图像路径列表。最后我填写特定日期明智图像的列表和网格(No of图像和日期不固定),看看屏幕截图。 Date wise images display in Grid View

现在我的问题是,当我在图像上设置点击监听器并在点击时添加复选标记图像然后图像添加到两个位置,为什么我不知道。第二个是当我向下滚动列表视图然后检查标记可见走了。

我想选择多个图像并添加复选标记图像并执行“删除图像”和“共享图像”等操作

Like this

我调用每个列表项的网格适配器,查看我的代码告诉我出了什么问题

自定义列表视图适配器:获取View方法

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    View row = convertView;

    ViewHolder viewHolder = new ViewHolder();

    DateSortedImageItem item = getItem(position);

    if (row == null) {

        row = mInflator.inflate(R.layout.row_date_sorted_image_list, parent, false);
        viewHolder.tv_date = (TextView) row.findViewById(R.id.tv_row_date);
        viewHolder.rowGridView = (GridView) row.findViewById(R.id.gv_row_item);

        viewHolder.tv_date.setText(item.getDate());

        row.setTag(viewHolder);

        gridAdapter = new GridAdapter(context, R.layout.row_sorted_image_gridview_item,
                item.getDateSortedImageList(), position);

        viewHolder.rowGridView.setAdapter(gridAdapter);

    } else {
        row.getTag();
    }

    return row;
}

private class ViewHolder {
    TextView tv_date;
    GridView rowGridView;
}

我的网格适配器代码是:

public View getView(final int position, View convertView, ViewGroup parent) {

    if (convertView == null) {
        LayoutInflater mInflater = ((Activity) getContext()).getLayoutInflater();
        convertView = mInflater.inflate(R.layout.row_sorted_image_gridview_item, parent, false);

    }
    view = convertView;
    final SquareImageView imageView = (SquareImageView) view.findViewById(R.id.iv_test_row_grid_img);

    final ImageView iv_checked = (ImageView) view.findViewById(R.id.iv_checked);
    final ImageView iv_unChecked = (ImageView) view.findViewById(R.id.iv_unchecked);

    view.setTag(arrList.get(position).toString());

    File f = new File(arrList.get(position).toString());
    System.out.println("arrList size >>" + arrList.size());
    Picasso.with(context).load(Uri.fromFile(f)).resize(100, 100).centerCrop().placeholder(R.drawable.ic_launcher)
            .error(R.drawable.ic_close_black).into(imageView);

我只是设置网格视图图像。现在我设置imageview点击ivent并添加复选标记然后添加复选标记事件两个地方并向下滚动然后可见也消失了。

听到什么错误以及如何设置图像视图的点击事件是唯一的。 最后我想设计一下像Google“Photos”应用程序。 建议我任何例子或图书馆:

1 个答案:

答案 0 :(得分:0)

首先,您应该创建一个POJO,如下所示

public class AlbumItem {
    private String headerStr;
    private List<ChildItem> children;

    //getter - setter....
    public class ChildItem {
        private String childName;
        private boolean isSelected;

        //getter - setter.....
    }
}

现在在主适配器中使用此POJO

并且在第二个适配器句柄中,选择逻辑表示如果isSelected为真,则显示iv_checked,否则显示iv_unchecked

如果您需要进一步说明,请与我们联系。

希望它会对你有所帮助。