「我正在試圖使Cardview在可打開新活動的位置點擊,但我在調用setitemclcik監聽器時丟失了某處,它給出了一個錯誤代碼f anonymous itemclicklistener。」找不到符號方法setItemClickListener
RecyclerViewAdapter.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) ;
}
}
}
DetailActivity.java
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);
}
}
Newsletterrecyclerviewitems.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>
u能請解釋豆蔻行 「PUT_YOUR_OBJECT」,年份和季度價值觀詮釋 –
'Viewholder.ImageTitleNameView.'意味着你在Viewholder下有一個textview。就像這樣,你可以調用你的Parent佈局ID –
你解決了你的問題還沒有 –