我正在该应用程序中开发购物应用程序我需要列出卖家上传的产品,我需要在列表视图中显示这些项目,信息有限。
一旦买家点击了需要导航到另一个页面的特定项目,它需要显示有关该产品的更多详细信息。
我已经在android studio中使用recyclelerview生成了一个列表。如果我点击该列表视图中的一个数据集,它必须导航到另一个页面,并且必须显示有关用户所访问的数据集的更多信息。
我已尝试过以下代码段,但它无法正常工作。
public class getItem extends AppCompatActivity {
private RecyclerView mAd_list;
private DatabaseReference mDatabase;
Button buy;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_items);
mDatabase = FirebaseDatabase.getInstance().getReference().child("Items");
mAd_list = (RecyclerView) findViewById(R.id.ad_list);
mAd_list.setHasFixedSize(true);
mAd_list.setLayoutManager(new LinearLayoutManager(this) {
});
mAd_list.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent intentRegistration=new Intent(getApplicationContext(),DisplayListDetailActivity.class);
startActivity(intentRegistration);
}
});
}
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerAdapter<Item, AdViewHolder>firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Item, AdViewHolder>(
Item.class,
R.layout.view_item,
AdViewHolder.class,
mDatabase
) {
@Override
protected void populateViewHolder(AdViewHolder viewHolder, Item model, int position) {
viewHolder.setTitle(model.getName());
viewHolder.setDesc(model.getPrice().toString());
viewHolder.setImage(getApplicationContext(), model.getImage());
}
};
mAd_list.setAdapter(firebaseRecyclerAdapter);
}
}
class AdViewHolder extends RecyclerView.ViewHolder{
View mView;
public AdViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setTitle(String title) {
TextView post_title = (TextView) mView.findViewById(R.id.post_title);
post_title.setText(title);
}
public void setDesc(String desc){
TextView post_desc = (TextView) mView.findViewById(R.id.post_desc);
post_desc.setText(desc);
}
public void setImage (Context ctx, String image){
ImageView post_image = (ImageView) mView.findViewById(R.id.post);
Picasso.with(ctx).load(image).into(post_image);
}
}
接口
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp">
<TextView
android:layout_width="match_parent"
android:layout_height="324dp"
android:id="@+id/post_desc"
android:text="The Ad Description Goes Here"
android:paddingTop="260dp"
android:textSize="16dp"
android:paddingBottom="15dp"
android:paddingLeft="10dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/post"
android:scaleType="centerCrop"
android:adjustViewBounds="true" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/post_title"
android:text="Ad Title Goes Here"
android:paddingTop="220dp"
android:textSize="16dp"
android:paddingLeft="10dp"
android:textStyle="bold" />
</android.support.v7.widget.CardView>
答案 0 :(得分:0)
您应该在recyclelerview的每个项目上收听click事件,因此请尝试在View.OnClickListener
类中实现AdViewHolder
接口(并请根据约定定义您的类名)。
答案 1 :(得分:0)
您正在整个Recycler中设置OnClickListener。
您必须在每个项目中创建onclicListener,而不是这样做。您可以在viewHolder中执行此操作。
public AdViewHolder(View itemView) {
super(itemView);
mView = itemView;
mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Do Something here for every Item
}
});
}