如何在android中单击GridView中的另一行时隐藏显示在上一选定行顶部的视图
我有一个如何在android中单击GridView中的另一行时隐藏显示在上一选定行顶部的视图,android,android-layout,android-fragments,gridview,Android,Android Layout,Android Fragments,Gridview,我有一个片段,带有自定义适配器扩展BaseAdapter,它管理GridView 我想在每个单元格的GridView和onClick的每一行上显示图像,我想在该特定图像的顶部打开一个半透明视图,该视图将显示图像细节 问题是,当我单击图像时,在图像顶部打开的半透明视图,但当我单击下一个图像时,在前一个图像上打开的半透明视图没有隐藏,它仍然显示在第一个图像上 请参阅下面的代码 我的片段 public class ProductFragment extends Fragment { Str
片段
,带有自定义适配器
扩展BaseAdapter
,它管理GridView
我想在每个单元格的GridView
和onClick
的每一行上显示图像,我想在该特定图像的顶部打开一个半透明视图,该视图将显示图像细节
问题是,当我单击图像时,在图像顶部打开的半透明视图,但当我单击下一个图像时,在前一个图像上打开的半透明视图没有隐藏,它仍然显示在第一个图像上
请参阅下面的代码
我的片段
public class ProductFragment extends Fragment {
String ss = null;
GridView gridView;
ArrayList<ProductParameterBO> productlist;
GridViewCustomAdapter gridViewCustomAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (savedInstanceState!=null){
View rootView = inflater.inflate(R.layout.empty_catalog_item,null);
TextView configure = (TextView)rootView.findViewById(R.id.text_conf);
configure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),SplitViewActivity.class);
intent.putExtra("firstTab","1stTabs");
startActivity(intent);
}
});
TextView text_here = (TextView)rootView.findViewById(R.id.text_here);
text_here.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
FloatingActionButton fab = (FloatingActionButton)rootView.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getActivity(), EditUploadActivity.class);
startActivity(intent);
}
});
return rootView;
} else {
View rootView = inflater.inflate(R.layout.fragment_product,null);
gridView =(GridView)rootView.findViewById(R.id.gridView);
productlist = new ArrayList<ProductParameterBO>();
productlist.add(new ProductParameterBO("Type","Numeric","yes","yes"));
productlist.add(new ProductParameterBO("Typess","Numericss","yesss","yesss"));
productlist.add(new ProductParameterBO("Typess","Numericss","yesss","yesss"));
productlist.add(new ProductParameterBO("Typess","Numericss","yesss","yesss"));
gridViewCustomAdapter = new GridViewCustomAdapter(getActivity(),productlist);
gridView.setAdapter(gridViewCustomAdapter);
gridViewCustomAdapter.notifyDataSetChanged();
return rootView;
}
// return inflater.inflate(R.layout.fragment_product,null);
}
}
公共类ProductFragment扩展了片段{
字符串ss=null;
GridView;
ArrayList产品列表;
GridViewCustomAdapter GridViewCustomAdapter;
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
如果(savedInstanceState!=null){
视图根视图=充气机。充气(R.layout.empty\u catalog\u item,null);
TextView configure=(TextView)rootView.findviewbyd(R.id.text\u conf);
configure.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent Intent=new Intent(getActivity(),SplitViewActivity.class);
意向。额外(“第一个标签”、“第一个标签”);
星触觉(意向);
}
});
TextView text_here=(TextView)rootView.findViewById(R.id.text_here);
text_here.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
}
});
FloatingActionButton fab=(FloatingActionButton)rootView.findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Intent Intent=new Intent(getActivity(),EditUploadActivity.class);
星触觉(意向);
}
});
返回rootView;
}否则{
视图根视图=充气机。充气(R.layout.fragment\u product,null);
gridView=(gridView)rootView.findviewbyd(R.id.gridView);
productlist=新的ArrayList();
添加(新的ProductParameterBO(“类型”、“数字”、“是”、“是”));
productlist.add(新的ProductParameterBO(“Typess”、“Numericss”、“yesss”、“yesss”));
productlist.add(新的ProductParameterBO(“Typess”、“Numericss”、“yesss”、“yesss”));
productlist.add(新的ProductParameterBO(“Typess”、“Numericss”、“yesss”、“yesss”));
gridViewCustomAdapter=新的gridViewCustomAdapter(getActivity(),productlist);
setAdapter(gridViewCustomAdapter);
gridViewCustomAdapter.notifyDataSetChanged();
返回rootView;
}
//返回充气机。充气(R.layout.fragment_product,空);
}
}
我的Adater
public class GridViewCustomAdapter extends BaseAdapter {
private List<ProductParameterBO> availList;
private LayoutInflater inflater;
Context context;
public GridViewCustomAdapter(Context ctx,List<ProductParameterBO> list){
this.context = ctx;
this.availList = list;
}
@Override
public int getCount() {
return availList.size();
}
@Override
public Object getItem(int position) {
return availList.get(position);
}
@Override
public long getItemId(int position) {
ProductParameterBO c = availList.get(position);
// long id = c.getTimeId();
return 0;
}
@Override
public View getView(int position,View convertView,final ViewGroup parent) {
View row = convertView;
final TeeTimeHolder holder;
if (row == null){
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.grid_row,parent,false);
holder = new TeeTimeHolder();
holder.myImage =(ImageView)row.findViewById(R.id.imageView10);
holder.name =(TextView)row.findViewById(R.id.textView47);
holder.edit =(TextView)row.findViewById(R.id.textView49);
holder.rl =(RelativeLayout)row.findViewById(R.id.img_ovrly);
row.setTag(holder);
} else {
holder =(TeeTimeHolder)row.getTag();
}
holder.name.setText(availList.get(position).getParameterName());
holder.myImage.setImageResource(R.drawable.toi);
holder.rl.setVisibility(View.GONE);
holder.myImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View rows = null;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rows = inflater.inflate(R.layout.image_overlay,parent,false);
// holder.rl = (RelativeLayout)rows.findViewById(R.id.img_ovrly);
holder.rl.setVisibility(View.VISIBLE);
}
});
return row;
}
static class TeeTimeHolder {
ImageView myImage;
TextView name,edit;
RelativeLayout rl;
//TextView descriptions;
/* TextView coursefee;
TextView viewdetils;*/
}
}
公共类GridViewCustomAdapter扩展了BaseAdapter{
私有列表可用;
私人充气机;
语境;
公共GridViewCustomAdapter(上下文ctx,列表){
this.context=ctx;
this.availist=列表;
}
@凌驾
public int getCount(){
return availist.size();
}
@凌驾
公共对象getItem(int位置){
返回availist.get(位置);
}
@凌驾
公共长getItemId(int位置){
ProductParameterBO c=availist.get(位置);
//long id=c.getTimeId();
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、最终视图组父视图){
视图行=转换视图;
最终持票人;
if(行==null){
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
行=充气机。充气(右布局。网格_行,父,假);
保持架=新的T形计时保持架();
holder.myImage=(ImageView)row.findViewById(R.id.imageView10);
holder.name=(TextView)row.findViewById(R.id.textView47);
holder.edit=(TextView)row.findViewById(R.id.textView49);
holder.rl=(RelativeLayout)row.findViewById(R.id.img_ovrly);
row.setTag(支架);
}否则{
holder=(TeeTimeHolder)行。getTag();
}
holder.name.setText(availist.get(position.getParameterName());
holder.myImage.setImageResource(R.drawable.toi);
holder.rl.setVisibility(视图已消失);
holder.myImage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
视图行=空;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
行=充气机。充气(右布局。图像覆盖,父,假);
//holder.rl=(RelativeLayout)rows.findViewById(R.id.img_ovrly);
holder.rl.setVisibility(视图可见);
}
});
返回行;
}
静态类计时器{
图像查看我的图像;
文本视图名称,编辑;
相对寿命;
//文本视图描述;
/*TextView-coursefee;
文本视图视图细节*/
}
}
我的XML布局网格\u row.XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView10"
android:src="@drawable/toi"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Image Name"
android:id="@+id/textView47"
android:layout_below="@+id/imageView10"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Edit"
android:id="@+id/textView49"
android:layout_below="@+id/textView47"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="5dp"
android:layout_marginLeft="10dp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/img_ovrly"
android:background="@color/opacity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/mail"
android:layout_marginTop="10dp"
android:id="@+id/image_i"
android:layout_centerHorizontal="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title :"
android:id="@+id/text_ttle"
android:layout_below="@+id/image_i"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:textColor="#ffffff"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/text_ttle"
android:text="hmmmm"
android:layout_below="@+id/image_i"
android:layout_marginTop="20dp"
android:textColor="#6ec6c5"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dimensions :"
android:id="@+id/text_dimen"
android:layout_below="@+id/text_ttle"
android:layout_marginLeft="20dp"
android:layout_marginTop="10dp"
android:textColor="#ffffff"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/text_dimen"
android:text="32*23"
android:layout_below="@+id/text_ttle"
android:layout_marginTop="10dp"
android:textColor="#6ec6c5"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Price :"
android:id="@+id/text_prce"
android:layout_below="@+id/text_dimen"
android:layout_marginLeft="20dp"
android:layout_marginTop="10dp"
android:textColor="#ffffff"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/text_prce"
android:text="32*23"
android:layout_below="@+id/text_dimen"
android:layout_marginTop="10dp"
android:textColor="#6ec6c5"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Color :"
android:id="@+id/text_clr"
android:layout_below="@+id/text_prce"
android:layout_marginLeft="20dp"
android:layout_marginTop="10dp"
android:textColor="#ffffff"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/text_clr"
android:text="red,white"
android:layout_below="@+id/text_prce"
android:layout_marginTop="10dp"
android:textColor="#6ec6c5"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Min. Quantity :"
android:id="@+id/text_minq"
android:layout_below="@+id/text_clr"
android:layout_marginLeft="20dp"
android:layout_marginTop="10dp"
android:textColor="#ffffff"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/text_minq"
android:text="1000"
android:layout_below="@+id/text_clr"
android:layout_marginTop="10dp"
android:textColor="#6ec6c5"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Type :"
android:id="@+id/text_typ"
android:layout_below="@+id/text_minq"
android:layout_marginLeft="20dp"
android:layout_marginTop="10dp"
android:textColor="#ffffff"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/text_typ"
android:text="creamic"
android:layout_below="@+id/text_minq"
android:layout_marginTop="10dp"
android:textColor="#6ec6c5"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img_flp"
android:background="@drawable/flip"
android:layout_below="@+id/text_typ"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:layout_marginTop="20dp"/>
</RelativeLayout>
</RelativeLayout>
我错过什么了吗?请帮我解决这个问题。我想要一个这样的屏幕。我打开图像上方的Translucent屏幕是否正确
@Override
public View getView(int position,View convertView,final ViewGroup parent) {
View row = convertView;
final TeeTimeHolder holder;
if (row == null){
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.grid_row,parent,false);
holder = new TeeTimeHolder();
holder.myImage =(ImageView)row.findViewById(R.id.imageView10);
holder.name =(TextView)row.findViewById(R.id.textView47);
holder.edit =(TextView)row.findViewById(R.id.textView49);
holder.rl =(RelativeLayout)row.findViewById(R.id.img_ovrly);
row.setTag(holder);
}
else {
holder =(TeeTimeHolder)row.getTag();
}
holder.name.setText(availList.get(position).getParameterName());
holder.myImage.setImageResource(R.drawable.toi);
holder.rl.setVisibility(View.GONE);
holder.myImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View rows = null;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rows = inflater.inflate(R.layout.image_overlay,parent,false);
// holder.rl = (RelativeLayout)rows.findViewById(R.id.img_ovrly);
// holder.rl.setVisibility(View.VISIBLE);
for(int i=0;i<availList.size();i++){
if(i!=position){
availList.get(i).flag=false;
}
}
availList.get(position).flag=true;
}
});
if(availList.get(i).flag){
holder.rl.setVisibility(View.VISIBLE);
}else{
holder.rl.setVisibility(View.INVISIBLE);
}
return row;
}
boolean mInformationViewVisible = false;
public void setInformationViewVisible(boolean visible) {
mInformationViewVisible = visible;
}
public boolean isInformationViewVisible() {
return mInformationViewVisible;
}
@Override
public View getView(int position,View convertView,final ViewGroup parent) {
...
holder.myImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int itemPosition = 0; itemPosition < availList.size(); itemPosition++) {
if(itemPosition != position){
availList.get(itemPosition)
.setInformationViewVisible(false);
}
availList.get(itemPosition).setInformationViewVisible(true);
}
});
if (currentItem.isInformationViewVisible()) {
holder.rl.setVisibility(View.VISIBLE);
} else {
holder.rl.setVisibility(View.GONE);
}
...
}