Java 找不到符号方法setItemClickListener

Java 找不到符号方法setItemClickListener,java,android,Java,Android,“我正在尝试使Cardview在打开新活动时可单击,但在调用setitemclcik listener时,我迷失了方向。它为匿名itemclicklistener提供了错误代码。” RecycleServiceAdapter.java import android.content.Context; import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.view.La

“我正在尝试使Cardview在打开新活动时可单击,但在调用setitemclcik listener时,我迷失了方向。它为匿名itemclicklistener提供了错误代码。”

RecycleServiceAdapter.java

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import info.techabyte.parentsapp.newsletter.DetailActivity;

import java.util.List;

import info.techabyte.parentsapp.R;

import static info.techabyte.parentsapp.R.id.imageUrl;
import static info.techabyte.parentsapp.R.id.year;
import static info.techabyte.parentsapp.R.id.quarter;


public class NewsletterRecyclerViewAdapter extends RecyclerView.Adapter<NewsletterRecyclerViewAdapter.ViewHolder> {

    Context context;

    List<NewsletterAdapter> getNewsletterAdapter;

    ImageLoader imageLoader1;


    public NewsletterRecyclerViewAdapter(List<NewsletterAdapter> getNewsletterAdapter, Context context){

        super();
        this.getNewsletterAdapter = getNewsletterAdapter;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.newsletter_recyclerview_items, parent, false);

        ViewHolder viewHolder = new ViewHolder(v);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder Viewholder, int position) {

        NewsletterAdapter getNewsletterAdapter1 =  getNewsletterAdapter.get(position);

        imageLoader1 = ServerImageParseAdapter.getInstance(context).getImageLoader();

        imageLoader1.get(getNewsletterAdapter1.getImageServerUrl(),
                ImageLoader.getImageListener(
                        Viewholder.networkImageView,//Server Image
                        R.mipmap.ic_launcher,//Before loading server image the default showing image.
                        android.R.drawable.ic_dialog_alert //Error image if requested image dose not found on server.
                )
        );

        Viewholder.networkImageView.setImageUrl(getNewsletterAdapter1.getImageServerUrl(), imageLoader1);

        Viewholder.ImageTitleNameView.setText(getNewsletterAdapter1.getImageTitleName());

        Viewholder.YearView.setText(getNewsletterAdapter1.getYear());

        Viewholder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(int pos) {
                openDetailActivity(quarter,year,imageUrl);
                Toast.makeText(context,quarter,Toast.LENGTH_SHORT).show();
            }
        });

    }

    @Override
    public int getItemCount() {

        return getNewsletterAdapter.size();
    }



    private void openDetailActivity(String quarter, String year, int image)
        {
            Intent i=new Intent(context, DetailActivity.class);

            //PACK DATA TO SEND
            i.putExtra("quarter",quarter);
            i.putExtra("year",year);
            i.putExtra("imageUrl",image);

            //open activity
            context.startActivity(i);

        }

    class ViewHolder extends RecyclerView.ViewHolder{

        public TextView ImageTitleNameView;
        public TextView YearView;
        public NetworkImageView networkImageView ;

        public ViewHolder(View itemView) {

            super(itemView);

            ImageTitleNameView = (TextView) itemView.findViewById(R.id.textView_item) ;

            YearView = (TextView) itemView.findViewById(R.id.textView_item1) ;

            networkImageView = (NetworkImageView) itemView.findViewById(R.id.VollyNetworkImageView1) ;


        }


    }

}
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import info.techabyte.parentsapp.R;


public class DetailActivity extends AppCompatActivity {

    TextView quartertxt;
    TextView yeartxt;
    ImageView imageUrl;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        //INITIALIZE VIEWS
        quartertxt= (TextView) findViewById(R.id.quarter);
        yeartxt= (TextView) findViewById(R.id.year);
        imageUrl= (ImageView) findViewById(R.id.imageUrl);

        //RECEIVE DATA
        Intent i=this.getIntent();
        String quarter=i.getExtras().getString("quarter");
        String year=i.getExtras().getString("year");
        int image=i.getExtras().getInt("imageUrl");

        //BIND DATA
        quartertxt.setText(quarter);
        yeartxt.setText(year);
        imageUrl.setImageResource(image);
    }

}
时事通讯RecycleServiceItems.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cardview1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardElevation="3dp"
    card_view:contentPadding="3dp"
    card_view:cardCornerRadius="3dp"
    card_view:cardMaxElevation="3dp"
    >


    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <com.android.volley.toolbox.NetworkImageView
            android:id="@+id/VollyNetworkImageView1"
            android:layout_width="150dp"
            android:layout_height="100dp"
            android:src="@mipmap/ic_launcher"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="@string/quarter"
            android:id="@+id/textView_item"
            android:layout_centerVertical="false"
            android:layout_toRightOf="@+id/VollyNetworkImageView1"
            android:layout_toEndOf="@+id/VollyNetworkImageView1"
            android:layout_marginLeft="20dp"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="@string/year"
            android:id="@+id/textView_item1"
            android:layout_centerVertical="false"
            android:layout_toRightOf="@+id/VollyNetworkImageView1"
            android:layout_toEndOf="@+id/VollyNetworkImageView1"
            android:layout_below="@+id/textView_item"
            android:layout_marginLeft="20dp"/>

    </RelativeLayout>

</android.support.v7.widget.CardView>

错误的方法

 Viewholder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(int pos) {
                ......
            }
        });
正确的方法

您的视图持有者持有XML属性。您应该调用RootLayout对象

Viewholder.Your_root_layout_OBJ.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(int pos) {
                ......
            }
        });

您的代码有多个问题: 1) 不要以这种方式调用ViewHolder的字段。您需要从onBindViewHolder方法中的holder参数强制转换它

YourViewHolderClass yourViewHolderMember=(YourViewHolderClass) 持有人

2) 您的ViewHolder类没有方法setItemClickListener。但它的根元素字段名为itemView。试着这样做:

yourViewHolderMember.itemView.setOnClickListener()


请你解释一下“放置你的对象”这一行,年份和季度的值是int
Viewholder.ImageTitleNameView.
表示你有一个文本视图,它位于Viewholder下。这样,你可以调用你的父布局ID。你解决问题了吗。现在被困在另一个地方。我用错了布局。现在已经解决了,但是现在陷入了空异常。告诉我们在哪里???先生,我从哪里得到这个根布局object@HarisDurrani看看我的答案:)@HarisDurrani open
newsletter\u recyclerview\u items.xml
。在Viewholder部分调用顶部布局。