两个关联的GridView,点击其中一个,另一个的状态发生变化,联动操作
来源:互联网 发布:javascript focus用法 编辑:程序博客网 时间:2024/06/10 18:15
最近做了个练习,为某个用户设置标签,标签页下方是可供选择的所有标签,上方是选中的标签,点击所有标签中的一项,上方列表显示相应的选项,点击上方列表中的一项,删除该项,下方所有标签列表中的该项呈未选中状态。如图所示:
页面代码:
package com.example.castedemo.user;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.GridView;import android.widget.RelativeLayout;import com.example.castedemo.R;import com.example.castedemo.family.adapter.NewTagAdapter;import com.example.castedemo.family.adapter.TagAdapter;import com.example.castedemo.user.bean.TagBean;import java.util.ArrayList;import java.util.List;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.OnClick;public class UserTagActivity extends Activity { private static final String TAG = "UserTagActivity"; @BindView(R.id.gv_addedTag) GridView gvAddedTag; @BindView(R.id.gv_allTag) GridView gvAllTag; // @BindView(R.id.iv_back)// ImageView ivBack;// @BindView(R.id.rl_bottom)// RelativeLayout rlBottom; String[] allTags = {"推荐", "热点", "视频", "图片", "段子", "社会", "娱乐", "科技"}; NewTagAdapter tagAdapter; @BindView(R.id.btn_tagCancel) Button btnTagCancel; @BindView(R.id.btn_tagSave) Button btnTagSave; Context mContext; List<String> selTags = new ArrayList<String>(); List<TagBean> tagBeen = new ArrayList<TagBean>(); List<TagBean> selTagBeans = new ArrayList<TagBean>(); NewTagAdapter selTagAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_tag); ButterKnife.bind(this); mContext = UserTagActivity.this; initData(); initSelData(); } public void initData() { for(int i=0;i<allTags.length;i++){ TagBean bean = new TagBean(); bean.setTag(allTags[i]); bean.setSel(false); tagBeen.add(bean); } tagAdapter = new NewTagAdapter(mContext,tagBeen); gvAllTag.setAdapter(tagAdapter); gvAllTag.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TagBean tagBean = tagBeen.get(position); Log.e(TAG,"tagName="+tagBean.getTag()+","+tagBean.isSel()); if(tagBean.isSel()){ tagBean.setSel(false); selTagBeans.remove(tagBean); }else{ tagBean.setSel(true); selTagBeans.add(tagBean); } tagAdapter.notifyDataSetChanged(); selTagAdapter.notifyDataSetChanged(); } }); } public void initSelData(){ if(getIntent().getStringExtra("selTag") != null){ String tags = getIntent().getStringExtra("selTag"); String[] saveTag = tags.split(",");
//将选中的标签列表设置成与所有标签相同的数据结构 for(int i=0;i<saveTag.length;i++){ for(int j=0;j<tagBeen.size();j++){ TagBean bean = tagBeen.get(j); if(saveTag[i].equals(bean.getTag())){ bean.setSel(true); selTagBeans.add(bean); } } } } selTagAdapter = new NewTagAdapter(mContext,selTagBeans); gvAddedTag.setAdapter(selTagAdapter); gvAddedTag.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TagBean bean = selTagBeans.get(position); bean.setSel(false); selTagBeans.remove(position); selTagAdapter.notifyDataSetChanged(); tagAdapter.notifyDataSetChanged(); } }); } @OnClick({R.id.btn_tagCancel, R.id.btn_tagSave}) public void onClick(View view) { switch (view.getId()) { case R.id.btn_tagCancel: finish(); break; case R.id.btn_tagSave: String passTags = ""; for(int i=0;i<selTagBeans.size();i++){// passTags[i] = selTagBeans.get(i).getTag(); if(selTagBeans.size()-1 == i){ passTags += selTagBeans.get(i).getTag(); }else{ passTags += selTagBeans.get(i).getTag()+","; } } Intent userIntent = new Intent(); userIntent.putExtra("tag",passTags); setResult(RESULT_OK,userIntent); finish(); break; } }}
适配器代码:
子项布局:package com.example.castedemo.family.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.castedemo.R;import com.example.castedemo.user.bean.TagBean;import java.util.List;import butterknife.BindView;import butterknife.ButterKnife;/** * Created by wangchm on 2017/10/26 0026. * 偏好标签页 */public class NewTagAdapter extends BaseAdapter { private static final String TAG = "TagAdapter"; private Context mContext; private List<TagBean> tagBeen; public NewTagAdapter(Context mContext, List<TagBean> tagBeen) { this.mContext = mContext; this.tagBeen = tagBeen; } @Override public int getCount() { return tagBeen == null ? 0 : tagBeen.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.tag_item, null); holder = new ViewHolder(convertView); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } TagBean bean = tagBeen.get(position); if(bean.isSel()){ holder.ivCheck.setVisibility(View.VISIBLE); }else{ holder.ivCheck.setVisibility(View.GONE); } holder.tvTag.setText(bean.getTag()); return convertView; } static class ViewHolder { @BindView(R.id.tv_tag) TextView tvTag; @BindView(R.id.iv_tagCheck) ImageView ivCheck; ViewHolder(View view) { ButterKnife.bind(this, view); } }}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv_tag" android:padding="10dp" android:text="推荐" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:background="@drawable/border_gray_style" android:textColor="@color/text_white" android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageView android:id="@+id/iv_tagCheck" android:visibility="gone" android:layout_alignRight="@+id/tv_tag" android:layout_alignTop="@+id/tv_tag" android:layout_marginTop="-5dp" android:layout_marginRight="-5dp" android:src="@drawable/delete_check" android:layout_width="18dp" android:layout_height="18dp" /></RelativeLayout>
阅读全文
0 0
- 两个关联的GridView,点击其中一个,另一个的状态发生变化,联动操作
- 点击ComboBox控件的一个选项另一个ComboBox的内容发生相应变化
- SQl trigger 有两个表,其中一个表的数据变化,同时要影响到另一个表
- 两个关联表如何更新其中一个表的数据
- 两个关联表如何更新其中的一个
- 两个关联表如何更新其中一个表的数据
- 两个关联表如何更新其中一个表的数据?
- 两个关联表如何更新其中一个表的数据
- 两个ListView联动 嵌套一个gridview的使用
- mysql update 两个表关联{两个关联表如何更新其中一个表的数据}
- GridView编辑状态下DropDownList的联动
- 比较两个字符串 看其中一个字符串再另一个字符串中出现的次数
- [Unity 笔记] 在Object上挂在两个script, 其中一个的初始化代码先于另一个执行
- 已知两个数组其中一个为另一个数组的子集,求补集数组
- 上边图片跟随点击的图片发生变化,点击图片样式发生变化
- 一个表的两个字段关联另一个表的一个字段
- 每隔一小时生成一个新的日志文件,当寄存器状态发生变化记录一次
- 一个WINFORM上面有两个DataGrid,当选中其中一个的时候,怎么让另一个CurrentRowIndex变成空?
- 欢迎使用CSDN-markdown编辑器
- okhttp请求
- Android studio 不能新建类的解决
- JDBC中使用preparedStatement相比statement的优势
- 实时可靠的开源分布式实时计算系统——Storm
- 两个关联的GridView,点击其中一个,另一个的状态发生变化,联动操作
- 数据结构--堆栈,列表--1
- C#读取xml文件
- Util工具类 对map中含有String类型的日期key值的list进行排序
- NKOJ 3500 独立集(dp)
- 内存泄漏(OOM)产生原因
- Apache ActiveMQ
- MIME
- ubuntu下neo4j的安装