滚动时 GridView 选择单元格发生变化
GridView selection cell changes when scrolling
我创建了一个包含 2 列和多行的 GridView。 child 包含 2 个视图。如果我点击任何一个 child,我需要隐藏第一个视图并在 child 中显示第二个视图。这工作正常。但是当我滚动 gridview 时,选定的 child(例如:child no 2)会回到正常位置,而另一个 child(随机)会像选定的那样出现。什么问题。请帮助我。
我的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/relativeLayoutPlist1"
android:layout_width="165dp"
android:layout_height="150dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="#ffffff"
android:orientation="vertical"
android:visibility="visible"
android:focusable="false" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:orientation="horizontal" >
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/img_subCategoryProducts"
android:layout_width="80dp"
android:layout_height="108dp"
android:layout_marginTop="5dp" />
<!--
<ImageView
android:layout_width="80dp"
android:layout_height="108dp"
android:layout_marginTop="10dp"
android:src="@drawable/imp" />
-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginRight="5dp" >
<TextView
android:id="@+id/tv_subCategoryDetails_OrPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="₹ 19.80"
android:textColor="#ab1b42"
android:textSize="15dp" />
<TextView
android:id="@+id/tv_subCategoryDetails_MRPValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/tv_subCategoryDetails_OrPrice"
android:layout_marginTop="2dp"
android:text="₹ 11.80"
android:textColor="#ab1b42"
android:textSize="10dp" />
</RelativeLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linearLayout1"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_subCategoryDetails_productName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:lines="2"
android:text="Knorr Cup a Soup Master Masala"
android:textColor="#4d4d4f"
android:textSize="12dp" />
<TextView
android:id="@+id/tv_subCategoryDetails_productId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productDescription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productCategoryId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productSubCategoryId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productStoreId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="(16.5 gm)"
android:textColor="#afafaf"
android:textSize="7dp"
android:visibility="gone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="12dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_subCategoryDetails_OrPrice1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OR Price : ₹ 9.80"
android:textColor="#ab1b42"
android:textSize="9dp"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_MRPTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="MRP:₹ "
android:textColor="#4d4d4f"
android:textSize="8dp"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_MRPValue1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/price_strike"
android:text="10.00"
android:textColor="#4d4d4f"
android:textSize="8dp"
android:visibility="gone" />
</LinearLayout>
<ImageView
android:id="@+id/img_subCategoryDetails_addToCart"
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_marginBottom="4dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_marginTop="17dp"
android:background="@drawable/img_add_to_cart"
android:scaleType="fitXY"
android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/relativeLayoutPlist2"
android:layout_width="165dp"
android:layout_height="150dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="#bf1e4a"
android:orientation="vertical"
android:visibility="gone"
android:focusable="false" >
<RelativeLayout
android:id="@+id/plistDetailsRelativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="3dp" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:padding="4dp"
android:src="@drawable/details_plist" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:padding="4dp"
android:src="@drawable/close_plist" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/plistBtnRelativeLayout"
android:layout_below="@+id/plistDetailsRelativeLayout"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp" >
<LinearLayout
android:id="@+id/ll"
android:layout_width="35dp"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="20dp"
android:layout_height="22dp"
android:src="@drawable/leftarrow_plist" />
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager_plist"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:layout_toLeftOf="@+id/ll1"
android:layout_toRightOf="@+id/ll" />
<LinearLayout
android:id="@+id/ll1"
android:layout_width="35dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView2"
android:layout_width="20dp"
android:layout_height="22dp"
android:src="@drawable/rightarrow_plist" />
</LinearLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
<ProgressBar
android:id="@+id/pastPurchases_bill_prograssbar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/progress"
android:visibility="gone" />
</FrameLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/plistBtnRelativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" >
<ImageView
android:id="@+id/plusIconPlist"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:padding="4dp"
android:src="@drawable/plus_plist" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginTop="10dp"
android:layout_toLeftOf="@+id/minusIconPlist"
android:layout_toRightOf="@+id/plusIconPlist"
android:gravity="center"
android:text="23"
android:textColor="#FFFFFF" />
<ImageView
android:id="@+id/minusIconPlist"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:padding="4dp"
android:src="@drawable/minus_plist" />
</RelativeLayout>
</RelativeLayout>
我的适配器:
class GridViewAdapterProductList extends BaseAdapter {
private ImageLoader mImageLoader;
Context ctx;
GridView gv;
LayoutInflater vi;
List<EntrySubCategoryDetails> product;
public GridViewAdapterProductList(Context context,
int textViewResourceId, List<EntrySubCategoryDetails> objects,
ImageLoader imageLoader, GridView gv_subCategoryDetails) {
mImageLoader = imageLoader;
ctx = context;
gv = gv_subCategoryDetails;
this.product = objects;
vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
class ViewHolder {
NetworkImageView image;
TextView tv_subCategoryDetails_productName;
TextView tv_subCategoryDetails_productId;
TextView tv_subCategoryDetails_productDescription;
TextView tv_subCategoryDetails_productCategoryId;
TextView tv_subCategoryDetails_productSubCategoryId;
TextView tv_subCategoryDetails_productStoreId;
TextView tv_subCategoryDetails_productSize;
TextView tv_subCategoryDetails_OrPrice;
TextView tv_subCategoryDetails_MRPValue;
TextView tv_subCategoryDetails_MRPTitle;
RelativeLayout r1;
RelativeLayout r2;
}
@Override
public int getCount() {
return product.size();
}
@Override
public Object getItem(int arg0) {
return product.get(arg0);
}
@Override
public long getItemId(int position) {
return product.indexOf(getItem(position));
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view;
ViewHolder holder =null;
if (convertView == null) {
view = LayoutInflater.from(ctx).inflate(
R.layout.sub_category_product_list, null);
holder = new ViewHolder();
holder.image = (NetworkImageView) view.findViewById(R.id.img_subCategoryProducts);
holder.tv_subCategoryDetails_productId = (TextView) view.findViewById(R.id.tv_subCategoryDetails_productId);
holder.tv_subCategoryDetails_productName = (TextView) view.findViewById(R.id.tv_subCategoryDetails_productName);
holder.tv_subCategoryDetails_productDescription = (TextView)view.findViewById(R.id.tv_subCategoryDetails_productDescription);
holder.tv_subCategoryDetails_productCategoryId = (TextView)view.findViewById(R.id.tv_subCategoryDetails_productCategoryId);
holder.tv_subCategoryDetails_productSubCategoryId = (TextView)view.findViewById(R.id.tv_subCategoryDetails_productSubCategoryId);
holder.tv_subCategoryDetails_productStoreId = (TextView)view.findViewById(R.id.tv_subCategoryDetails_productStoreId);
holder.tv_subCategoryDetails_productSize = (TextView) view.findViewById(R.id.tv_subCategoryDetails_productSize);
holder. tv_subCategoryDetails_OrPrice = (TextView) view.findViewById(R.id.tv_subCategoryDetails_OrPrice);
holder.tv_subCategoryDetails_MRPValue = (TextView) view.findViewById(R.id.tv_subCategoryDetails_MRPValue);
holder.tv_subCategoryDetails_MRPTitle = (TextView) view.findViewById(R.id.tv_subCategoryDetails_MRPTitle);
holder. r1 = (RelativeLayout) view.findViewById(R.id.relativeLayoutPlist1);
holder.r2 = (RelativeLayout) view.findViewById(R.id.relativeLayoutPlist2);
view.setTag(holder);
}else {
view = (View)convertView;
holder = (ViewHolder) view.getTag();
//ShoppingListNames rowItems = (ShoppingListNames) getItem(position);
}
// final ViewHolder holder = (ViewHolder) convertView.getTag();
EntrySubCategoryDetails entry = (EntrySubCategoryDetails) getItem(position);
holder.image.setDefaultImageResId(R.drawable.img_loading);
if (entry.getThumbnailUrl() != null) {
holder.image.setImageUrl(entry.getThumbnailUrl(), mImageLoader);
}
holder.image.setErrorImageResId(R.drawable.img_loading);
holder.tv_subCategoryDetails_productName.setText(entry.getProductName());
holder.tv_subCategoryDetails_productSize.setText("("+entry.getProductUnit()+")");
holder.tv_subCategoryDetails_MRPValue.setText("₹"+entry.getProductOrMrpPrice());
holder.tv_subCategoryDetails_OrPrice.setText("₹"+entry.getProductOrPrice());
holder.tv_subCategoryDetails_productId.setText(entry.getProductId()+"");
holder.tv_subCategoryDetails_productDescription.setText(entry.getProductDescription());
holder.tv_subCategoryDetails_productCategoryId.setText(entry.getCategoryId());
holder.tv_subCategoryDetails_productSubCategoryId.setText(entry.getSubCategoryId());
holder.tv_subCategoryDetails_productStoreId.setText(entry.getStoreId()+"");
float save = entry.getProductOrMrpPrice()-entry.getProductOrPrice();
holder.tv_subCategoryDetails_productName.setTypeface(App_VolleyExamples.tf_roboto_regular);
holder.tv_subCategoryDetails_productSize.setTypeface(App_VolleyExamples.tf_roboto_regular);
holder.tv_subCategoryDetails_OrPrice.setTypeface(App_VolleyExamples.tf_roboto_medium);
holder.tv_subCategoryDetails_MRPValue.setTypeface(App_VolleyExamples.tf_roboto_light);
holder.tv_subCategoryDetails_MRPTitle.setTypeface(App_VolleyExamples.tf_roboto_light);
if(product.get(position).isFirstRowSelected())
{
holder.r1.setVisibility(View.GONE);
holder.r2.setVisibility(View.VISIBLE);
}
else
{
holder.r1.setVisibility(View.VISIBLE);
holder.r2.setVisibility(View.GONE);
}
holder.r1.setTag("first");
holder.r1.setTag(holder.r1.getId(),position);
holder.r2.setTag(holder.r2.getId(),position);
holder.r1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
if (v.getTag().toString().equals("first")){
product.get(position).setFirstRowSelected(true);
int indx = (Integer) v.getTag(v.getId());
View v1=(View) v.getParent();
RelativeLayout Image=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist2);
Log.i("visible", "first "+v.getVisibility());
if(v.getVisibility() == View.VISIBLE){
ObjectAnimator animation = ObjectAnimator.ofFloat(v, "rotationY", 0.0f, 90f);
animation.setDuration(3600);
animation.setInterpolator(new AccelerateDecelerateInterpolator());
animation.start();
v.setVisibility(View.GONE);
ObjectAnimator animation1 = ObjectAnimator.ofFloat(Image, "rotationY", -90.0f, 0.0f);
animation.setDuration(3600);
animation1.start();
animation.setInterpolator(new AccelerateDecelerateInterpolator());
Image.setVisibility(View.VISIBLE);
}
}
}
});
holder.r2.setTag("second");
holder.r2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getTag().toString().equals("second")){
product.get(position).setFirstRowSelected(false);
int indx = (Integer) v.getTag(v.getId());
View v1=(View) v.getParent();
RelativeLayout Image=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist1);
Log.i("visible", "second "+v.getVisibility());
if(v.getVisibility() == View.VISIBLE){
ObjectAnimator animation = ObjectAnimator.ofFloat(v, "rotationY", 0.0f, 360f);
animation.setDuration(3600);
animation.setInterpolator(new AccelerateDecelerateInterpolator());
animation.start();
v.setVisibility(View.GONE);
ObjectAnimator animation1 = ObjectAnimator.ofFloat(Image, "rotationY", -90.0f, 0.0f);
animation.setDuration(3600);
animation1.start();
animation.setInterpolator(new AccelerateDecelerateInterpolator());
Image.setVisibility(View.VISIBLE);
}
}
}
});
return view;
}
};
删除行
holder.r1.setTag(holder.r1.getId(),position);
holder.r2.setTag(holder.r2.getId(),position);
那么代码就是
持有人。r1.setTag("first");
holder.r1.setOnClickListener(这个);
holder.r2.setTag("second");
holder.r2.setOnClickListener(这个);
在 onClick 函数中将您的代码更改为
@Override
public void onClick(View v) {
if (v.getTag().toString().equals("first")) {
View v1=(View) v.getParent();
RelativeLayout r1=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist1);
RelativeLayout r2=(RelativeLayout)v1.findViewById(R.id.relativeLayoutPlist2);
if (r1.getVisibility() == View.VISIBLE) {
r1.setVisibility(View.GONE);
r2.setVisibility(View.VISIBLE);
}
} else if (v.getTag().toString().equals("second")) {
View v1=(View) v.getParent();
RelativeLayout r1=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist1);
RelativeLayout r2=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist2);
if (r2.getVisibility() == View.VISIBLE) {
r2.setVisibility(View.GONE);
r1.setVisibility(View.VISIBLE);
}
}
Mange selected row value in object as defined below.
Add below things in "EntrySubCategoryDetails" class.
private boolean isFirstRowSelected;
// define getter setter here.
public boolean getFirstRowSelected()
{
return isFirstRowSelected;
}
public void setFirstRowSelected(boolean isFirstRowSelected)
{
this.isFirstRowSelected= isFirstRowSelected;
}
In Adapter make below changes.
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getTag().toString().equals("first")){
product.get(position).setFirstRowSelected(true);
int indx = (Integer) v.getTag(v.getId());
View v1=(View) v.getParent();
RelativeLayout Image=(RelativeLayout)v1.findViewById(R.id.relativeLayoutPlist2);
Log.i("visible", "first "+v.getVisibility());
if(v.getVisibility() == View.VISIBLE){
v.setVisibility(View.GONE);
Image.setVisibility(View.VISIBLE);
}
}else if (v.getTag().toString().equals("second")){
product.get(position).setFirstRowSelected(false);
int indx = (Integer) v.getTag(v.getId());
View v1=(View) v.getParent();
RelativeLayout Image=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist1);
Log.i("visible", "second "+v.getVisibility());
if(v.getVisibility() == View.VISIBLE){
v.setVisibility(View.GONE);
Image.setVisibility(View.VISIBLE);
}
}
}
=====================
In getview() add below code.
{
if(product.get(position).getFirstRowSelected)
{
holder.r1.setVisibility(View.VISIBLE);
holder.r2.setVisibility(View.GONE);
}
else
{
holder.r1.setVisibility(View.GONE);
holder.r2.setVisibility(View.VISIBLE);
}
}
我创建了一个包含 2 列和多行的 GridView。 child 包含 2 个视图。如果我点击任何一个 child,我需要隐藏第一个视图并在 child 中显示第二个视图。这工作正常。但是当我滚动 gridview 时,选定的 child(例如:child no 2)会回到正常位置,而另一个 child(随机)会像选定的那样出现。什么问题。请帮助我。
我的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/relativeLayoutPlist1"
android:layout_width="165dp"
android:layout_height="150dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="#ffffff"
android:orientation="vertical"
android:visibility="visible"
android:focusable="false" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:orientation="horizontal" >
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/img_subCategoryProducts"
android:layout_width="80dp"
android:layout_height="108dp"
android:layout_marginTop="5dp" />
<!--
<ImageView
android:layout_width="80dp"
android:layout_height="108dp"
android:layout_marginTop="10dp"
android:src="@drawable/imp" />
-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginRight="5dp" >
<TextView
android:id="@+id/tv_subCategoryDetails_OrPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="₹ 19.80"
android:textColor="#ab1b42"
android:textSize="15dp" />
<TextView
android:id="@+id/tv_subCategoryDetails_MRPValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/tv_subCategoryDetails_OrPrice"
android:layout_marginTop="2dp"
android:text="₹ 11.80"
android:textColor="#ab1b42"
android:textSize="10dp" />
</RelativeLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linearLayout1"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_subCategoryDetails_productName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:lines="2"
android:text="Knorr Cup a Soup Master Masala"
android:textColor="#4d4d4f"
android:textSize="12dp" />
<TextView
android:id="@+id/tv_subCategoryDetails_productId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productDescription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productCategoryId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productSubCategoryId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productStoreId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_productSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="(16.5 gm)"
android:textColor="#afafaf"
android:textSize="7dp"
android:visibility="gone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="12dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_subCategoryDetails_OrPrice1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OR Price : ₹ 9.80"
android:textColor="#ab1b42"
android:textSize="9dp"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_MRPTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="MRP:₹ "
android:textColor="#4d4d4f"
android:textSize="8dp"
android:visibility="gone" />
<TextView
android:id="@+id/tv_subCategoryDetails_MRPValue1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/price_strike"
android:text="10.00"
android:textColor="#4d4d4f"
android:textSize="8dp"
android:visibility="gone" />
</LinearLayout>
<ImageView
android:id="@+id/img_subCategoryDetails_addToCart"
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_marginBottom="4dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_marginTop="17dp"
android:background="@drawable/img_add_to_cart"
android:scaleType="fitXY"
android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/relativeLayoutPlist2"
android:layout_width="165dp"
android:layout_height="150dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="#bf1e4a"
android:orientation="vertical"
android:visibility="gone"
android:focusable="false" >
<RelativeLayout
android:id="@+id/plistDetailsRelativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="3dp" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:padding="4dp"
android:src="@drawable/details_plist" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:padding="4dp"
android:src="@drawable/close_plist" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/plistBtnRelativeLayout"
android:layout_below="@+id/plistDetailsRelativeLayout"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp" >
<LinearLayout
android:id="@+id/ll"
android:layout_width="35dp"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="20dp"
android:layout_height="22dp"
android:src="@drawable/leftarrow_plist" />
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager_plist"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:layout_toLeftOf="@+id/ll1"
android:layout_toRightOf="@+id/ll" />
<LinearLayout
android:id="@+id/ll1"
android:layout_width="35dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView2"
android:layout_width="20dp"
android:layout_height="22dp"
android:src="@drawable/rightarrow_plist" />
</LinearLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
<ProgressBar
android:id="@+id/pastPurchases_bill_prograssbar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/progress"
android:visibility="gone" />
</FrameLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/plistBtnRelativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" >
<ImageView
android:id="@+id/plusIconPlist"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:padding="4dp"
android:src="@drawable/plus_plist" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginTop="10dp"
android:layout_toLeftOf="@+id/minusIconPlist"
android:layout_toRightOf="@+id/plusIconPlist"
android:gravity="center"
android:text="23"
android:textColor="#FFFFFF" />
<ImageView
android:id="@+id/minusIconPlist"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:padding="4dp"
android:src="@drawable/minus_plist" />
</RelativeLayout>
</RelativeLayout>
我的适配器:
class GridViewAdapterProductList extends BaseAdapter {
private ImageLoader mImageLoader;
Context ctx;
GridView gv;
LayoutInflater vi;
List<EntrySubCategoryDetails> product;
public GridViewAdapterProductList(Context context,
int textViewResourceId, List<EntrySubCategoryDetails> objects,
ImageLoader imageLoader, GridView gv_subCategoryDetails) {
mImageLoader = imageLoader;
ctx = context;
gv = gv_subCategoryDetails;
this.product = objects;
vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
class ViewHolder {
NetworkImageView image;
TextView tv_subCategoryDetails_productName;
TextView tv_subCategoryDetails_productId;
TextView tv_subCategoryDetails_productDescription;
TextView tv_subCategoryDetails_productCategoryId;
TextView tv_subCategoryDetails_productSubCategoryId;
TextView tv_subCategoryDetails_productStoreId;
TextView tv_subCategoryDetails_productSize;
TextView tv_subCategoryDetails_OrPrice;
TextView tv_subCategoryDetails_MRPValue;
TextView tv_subCategoryDetails_MRPTitle;
RelativeLayout r1;
RelativeLayout r2;
}
@Override
public int getCount() {
return product.size();
}
@Override
public Object getItem(int arg0) {
return product.get(arg0);
}
@Override
public long getItemId(int position) {
return product.indexOf(getItem(position));
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view;
ViewHolder holder =null;
if (convertView == null) {
view = LayoutInflater.from(ctx).inflate(
R.layout.sub_category_product_list, null);
holder = new ViewHolder();
holder.image = (NetworkImageView) view.findViewById(R.id.img_subCategoryProducts);
holder.tv_subCategoryDetails_productId = (TextView) view.findViewById(R.id.tv_subCategoryDetails_productId);
holder.tv_subCategoryDetails_productName = (TextView) view.findViewById(R.id.tv_subCategoryDetails_productName);
holder.tv_subCategoryDetails_productDescription = (TextView)view.findViewById(R.id.tv_subCategoryDetails_productDescription);
holder.tv_subCategoryDetails_productCategoryId = (TextView)view.findViewById(R.id.tv_subCategoryDetails_productCategoryId);
holder.tv_subCategoryDetails_productSubCategoryId = (TextView)view.findViewById(R.id.tv_subCategoryDetails_productSubCategoryId);
holder.tv_subCategoryDetails_productStoreId = (TextView)view.findViewById(R.id.tv_subCategoryDetails_productStoreId);
holder.tv_subCategoryDetails_productSize = (TextView) view.findViewById(R.id.tv_subCategoryDetails_productSize);
holder. tv_subCategoryDetails_OrPrice = (TextView) view.findViewById(R.id.tv_subCategoryDetails_OrPrice);
holder.tv_subCategoryDetails_MRPValue = (TextView) view.findViewById(R.id.tv_subCategoryDetails_MRPValue);
holder.tv_subCategoryDetails_MRPTitle = (TextView) view.findViewById(R.id.tv_subCategoryDetails_MRPTitle);
holder. r1 = (RelativeLayout) view.findViewById(R.id.relativeLayoutPlist1);
holder.r2 = (RelativeLayout) view.findViewById(R.id.relativeLayoutPlist2);
view.setTag(holder);
}else {
view = (View)convertView;
holder = (ViewHolder) view.getTag();
//ShoppingListNames rowItems = (ShoppingListNames) getItem(position);
}
// final ViewHolder holder = (ViewHolder) convertView.getTag();
EntrySubCategoryDetails entry = (EntrySubCategoryDetails) getItem(position);
holder.image.setDefaultImageResId(R.drawable.img_loading);
if (entry.getThumbnailUrl() != null) {
holder.image.setImageUrl(entry.getThumbnailUrl(), mImageLoader);
}
holder.image.setErrorImageResId(R.drawable.img_loading);
holder.tv_subCategoryDetails_productName.setText(entry.getProductName());
holder.tv_subCategoryDetails_productSize.setText("("+entry.getProductUnit()+")");
holder.tv_subCategoryDetails_MRPValue.setText("₹"+entry.getProductOrMrpPrice());
holder.tv_subCategoryDetails_OrPrice.setText("₹"+entry.getProductOrPrice());
holder.tv_subCategoryDetails_productId.setText(entry.getProductId()+"");
holder.tv_subCategoryDetails_productDescription.setText(entry.getProductDescription());
holder.tv_subCategoryDetails_productCategoryId.setText(entry.getCategoryId());
holder.tv_subCategoryDetails_productSubCategoryId.setText(entry.getSubCategoryId());
holder.tv_subCategoryDetails_productStoreId.setText(entry.getStoreId()+"");
float save = entry.getProductOrMrpPrice()-entry.getProductOrPrice();
holder.tv_subCategoryDetails_productName.setTypeface(App_VolleyExamples.tf_roboto_regular);
holder.tv_subCategoryDetails_productSize.setTypeface(App_VolleyExamples.tf_roboto_regular);
holder.tv_subCategoryDetails_OrPrice.setTypeface(App_VolleyExamples.tf_roboto_medium);
holder.tv_subCategoryDetails_MRPValue.setTypeface(App_VolleyExamples.tf_roboto_light);
holder.tv_subCategoryDetails_MRPTitle.setTypeface(App_VolleyExamples.tf_roboto_light);
if(product.get(position).isFirstRowSelected())
{
holder.r1.setVisibility(View.GONE);
holder.r2.setVisibility(View.VISIBLE);
}
else
{
holder.r1.setVisibility(View.VISIBLE);
holder.r2.setVisibility(View.GONE);
}
holder.r1.setTag("first");
holder.r1.setTag(holder.r1.getId(),position);
holder.r2.setTag(holder.r2.getId(),position);
holder.r1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
if (v.getTag().toString().equals("first")){
product.get(position).setFirstRowSelected(true);
int indx = (Integer) v.getTag(v.getId());
View v1=(View) v.getParent();
RelativeLayout Image=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist2);
Log.i("visible", "first "+v.getVisibility());
if(v.getVisibility() == View.VISIBLE){
ObjectAnimator animation = ObjectAnimator.ofFloat(v, "rotationY", 0.0f, 90f);
animation.setDuration(3600);
animation.setInterpolator(new AccelerateDecelerateInterpolator());
animation.start();
v.setVisibility(View.GONE);
ObjectAnimator animation1 = ObjectAnimator.ofFloat(Image, "rotationY", -90.0f, 0.0f);
animation.setDuration(3600);
animation1.start();
animation.setInterpolator(new AccelerateDecelerateInterpolator());
Image.setVisibility(View.VISIBLE);
}
}
}
});
holder.r2.setTag("second");
holder.r2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getTag().toString().equals("second")){
product.get(position).setFirstRowSelected(false);
int indx = (Integer) v.getTag(v.getId());
View v1=(View) v.getParent();
RelativeLayout Image=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist1);
Log.i("visible", "second "+v.getVisibility());
if(v.getVisibility() == View.VISIBLE){
ObjectAnimator animation = ObjectAnimator.ofFloat(v, "rotationY", 0.0f, 360f);
animation.setDuration(3600);
animation.setInterpolator(new AccelerateDecelerateInterpolator());
animation.start();
v.setVisibility(View.GONE);
ObjectAnimator animation1 = ObjectAnimator.ofFloat(Image, "rotationY", -90.0f, 0.0f);
animation.setDuration(3600);
animation1.start();
animation.setInterpolator(new AccelerateDecelerateInterpolator());
Image.setVisibility(View.VISIBLE);
}
}
}
});
return view;
}
};
删除行
holder.r1.setTag(holder.r1.getId(),position);
holder.r2.setTag(holder.r2.getId(),position);
那么代码就是
持有人。r1.setTag("first");
holder.r1.setOnClickListener(这个);
holder.r2.setTag("second");
holder.r2.setOnClickListener(这个);
在 onClick 函数中将您的代码更改为
@Override
public void onClick(View v) {
if (v.getTag().toString().equals("first")) {
View v1=(View) v.getParent();
RelativeLayout r1=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist1);
RelativeLayout r2=(RelativeLayout)v1.findViewById(R.id.relativeLayoutPlist2);
if (r1.getVisibility() == View.VISIBLE) {
r1.setVisibility(View.GONE);
r2.setVisibility(View.VISIBLE);
}
} else if (v.getTag().toString().equals("second")) {
View v1=(View) v.getParent();
RelativeLayout r1=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist1);
RelativeLayout r2=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist2);
if (r2.getVisibility() == View.VISIBLE) {
r2.setVisibility(View.GONE);
r1.setVisibility(View.VISIBLE);
}
}
Mange selected row value in object as defined below.
Add below things in "EntrySubCategoryDetails" class.
private boolean isFirstRowSelected;
// define getter setter here.
public boolean getFirstRowSelected()
{
return isFirstRowSelected;
}
public void setFirstRowSelected(boolean isFirstRowSelected)
{
this.isFirstRowSelected= isFirstRowSelected;
}
In Adapter make below changes.
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getTag().toString().equals("first")){
product.get(position).setFirstRowSelected(true);
int indx = (Integer) v.getTag(v.getId());
View v1=(View) v.getParent();
RelativeLayout Image=(RelativeLayout)v1.findViewById(R.id.relativeLayoutPlist2);
Log.i("visible", "first "+v.getVisibility());
if(v.getVisibility() == View.VISIBLE){
v.setVisibility(View.GONE);
Image.setVisibility(View.VISIBLE);
}
}else if (v.getTag().toString().equals("second")){
product.get(position).setFirstRowSelected(false);
int indx = (Integer) v.getTag(v.getId());
View v1=(View) v.getParent();
RelativeLayout Image=(RelativeLayout) v1.findViewById(R.id.relativeLayoutPlist1);
Log.i("visible", "second "+v.getVisibility());
if(v.getVisibility() == View.VISIBLE){
v.setVisibility(View.GONE);
Image.setVisibility(View.VISIBLE);
}
}
}
=====================
In getview() add below code.
{
if(product.get(position).getFirstRowSelected)
{
holder.r1.setVisibility(View.VISIBLE);
holder.r2.setVisibility(View.GONE);
}
else
{
holder.r1.setVisibility(View.GONE);
holder.r2.setVisibility(View.VISIBLE);
}
}