[英]BaseAdapter selecting item issue
我有一个扩展BaseAdapter的ListView。 我有一个数组列表。 ListView会膨胀并正确填充。 我正在使用鳍状肢视图将布局更改为另一个布局,但是问题是,当我单击第一个项目时,它会旋转,但是第三或第六行的项目也会旋转列表视图,我该如何解决它,我只想更改图像所选项目的
ArrayList<product_data> al=new ArrayList<product_data>();
class product_data
{
String post_title;
String newprice;
String oldprice;
String image;
String id;
product_data(String post_title,String newprice,String oldprice,String image,String id)
{
this.post_title=post_title;
this.newprice=newprice;
this.oldprice=oldprice;
this.image=image;
this.id=id;
}
}
在arraylist中添加数据
try {
JSONObject parentObject = new JSONObject(json.toString());
JSONObject userDetails = parentObject.getJSONObject("response");
JSONArray jarray=userDetails.getJSONArray("products_data");
for(int i=0;i<jarray.length();i++)
{
System.out.println("From the Dataaaa");
JSONObject c = jarray.getJSONObject(i);
String details=c.getString("details");
String image=c.getString("image");
String catagory=c.getString("catagory");
String new_price=c.getString("new_price");
String title=c.getString("title");
String id1=c.getString("id");
System.out.println("from ther first image"+image);
System.out.println("from the sdafdfadf"+details);
al.add(new product_data(title, new_price, new_price, image, id1));
转接器类别
class MyAdapter extends BaseAdapter
{
@Override
public int getCount() {
// TODO Auto-generated method stub
return al.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return al.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View singleView, ViewGroup parent) {
// TODO Auto-generated method stub
final int ok=position;
if(singleView==null)
{
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
singleView = inflater.inflate(R.layout.product_ist_layout,parent,false);
System.out.println("from the if"+position);
viewAnimator = (ViewAnimator)singleView.findViewById(R.id.viewFlipper);
rootLayout = (View)singleView.findViewById(R.id.main_activity_root);
cardFace = (View)singleView.findViewById(R.id.main_activity_card_face);
cardBack = (View) singleView.findViewById(R.id.main_activity_card_back);
}
System.out.println("from the else");
System.out.println("Position in else"+position);
product_data a=al.get(position);
TextView tv1=(TextView)singleView.findViewById(R.id.textView2);
TextView tv2=(TextView)singleView.findViewById(R.id.textView3);
TextView tv3=(TextView)singleView.findViewById(R.id.textView1);
/**
* Bind a click listener to initiate the flip transitions
*/
viewAnimator.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// This is all you need to do to 3D flip
AnimationFactory.flipTransition(viewAnimator, FlipDirection.LEFT_RIGHT);
}
});
cardFace.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("positon"+ok);
AnimationFactory.flipTransition(viewAnimator, FlipDirection.LEFT_RIGHT);
}
});
cardBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
AnimationFactory.flipTransition(viewAnimator, FlipDirection.LEFT_RIGHT);
}
});
imgview1=(ImageView)singleView.findViewById(R.id.imageView4);
imgview1.setTag(position);
imgview1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int position1=(Integer)v.getTag();
System.out.println(position1);
String id=al.get(position1).id;
System.out.println("id from the list"+id);
Intent in=new Intent(product_list_Activity.this,rating_dialog.class);
in.putExtra("id",id);
startActivity(in);
}
});
ImageView imgview2=(ImageView)singleView.findViewById(R.id.imageView5);
imgview2.setTag(position);
imgview2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int position1=(Integer)v.getTag();
System.out.println(position1);
String id=al.get(position1).id;
System.out.println("id from the list"+id);
Intent in=new Intent(product_list_Activity.this,product_review.class);
in.putExtra("id",id);
startActivity(in);
}
});
tv3.setTag(position);
tv3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int position1=(Integer)v.getTag();
System.out.println("from the review "+position1);
String id=al.get(position1).id;
globalvariables.product_id=id;
Intent in=new Intent(getApplicationContext(),review_product_tabbar.class);
startActivity(in);
}
});
tv1.setText(a.post_title);
tv2.setText("$"+a.oldprice);
tv1.setTypeface(tf);
tv2.setTypeface(tf);
tv3.setTypeface(tf);
int loader = R.drawable.ic_launcher;
ImageView image = (ImageView)singleView. findViewById(R.id.imageView1);
imgLoader.DisplayImage(a.image, loader, image);
Animation anim = new Rotate3dAnimation(90.0f, 0.0f, 100.0f, false, singleView);
anim.setDuration(1000l);
singleView.startAnimation(anim);
return singleView;
}
}
}
当我单击第一个项目时,它旋转并且出现另一个视图
但是当我滚动下图中的第四项时,也会旋转
我在代码中使用相对视图上的单击列表器
我对点击图片有一个想法,首先尝试获取位置,当您获取位置后,再在该位置设置新的图片背景。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.