【发布时间】:2015-09-30 14:02:33
【问题描述】:
我试图找到解决方案,但我的编程技能薄弱并没有帮助我解决问题。
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
public class GridAdapter extends RecyclerView.Adapter<GridAdapter.ViewHolder> {
List<HeroItem> mItems;
Context mContext;
MyOnItemClickListener listener;
public GridAdapter(Context context) {
super();
this.mContext = context;
mItems = new ArrayList<HeroItem>();
HeroItem species = new HeroItem();
//species.setName("Amur Leopard");
species.setThumbnail(R.drawable.test1);
mItems.add(species);
species = new HeroItem();
//species.setName("Black Rhino");
species.setThumbnail(R.drawable.test2);
mItems.add(species);
species = new HeroItem();
//species.setName("Orangutan");
species.setThumbnail(R.drawable.test3);
mItems.add(species);
species = new HeroItem();
//species.setName("Sea Lions");
species.setThumbnail(R.drawable.test4);
mItems.add(species);
species = new HeroItem();
//species.setName("Indian Elephant");
species.setThumbnail(R.drawable.test5);
mItems.add(species);
species = new HeroItem();
// species.setName("Giant Panda");
species.setThumbnail(R.drawable.test6);
mItems.add(species);
species = new HeroItem();
//species.setName("Snow Leopard");
species.setThumbnail(R.drawable.test1);
mItems.add(species);
species = new HeroItem();
//species.setName("Dolphin");
species.setThumbnail(R.drawable.test1);
mItems.add(species);
}
@Override
public GridAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, final int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.grid_item, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
HeroItem nature = mItems.get(position);
//viewHolder.tvspecies.setText(nature.getName());
//viewHolder.imgThumbnail.setImageResource(nature.getThumbnail());
Picasso.with(mContext)
.load(nature.getThumbnail())
.into(viewHolder.imgThumbnail);
viewHolder.setListener(new MyOnItemClickListener() {
@Override
public void MyOnClickListener(int position) {
//Log.d("Click","Position: " + position);
switch (position) {
case 0:
Intent intent = new Intent(mContext, Wolverine.class);
mContext.startActivity(intent);
break;
}
}
});
}
@Override
public int getItemCount() {
return mItems.size();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public ImageView imgThumbnail;
//public TextView tvspecies;
public ViewHolder(View itemView) {
super(itemView);
imgThumbnail = (ImageView) itemView.findViewById(R.id.photoView);
//tvspecies = (TextView)itemView.findViewById(R.id.tv_species);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
listener.MyOnClickListener(getAdapterPosition());
}
public void setListener(MyOnItemClickListener onItemClick) {
listener = onItemClick;
}
}
public interface MyOnItemClickListener {
void MyOnClickListener(int position);
}
}
所以,我写了自己的listener 需要position 的item,如您所见。我在日志中显示 position 没有问题 Log.d("Click","Position: " + position); ,但我仍然无法开始新的活动。
这是我的fragment Activity 的代码,它使用了adapter
import android.graphics.Point;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
public class TabHero extends Fragment {
RecyclerView mRecyclerView;
RecyclerView.LayoutManager mLayoutManager;
RecyclerView.Adapter mAdapter;
int widthRecycler,widthScreen,padding;
public static TabHero newInstance() {
Bundle args = new Bundle();
TabHero fragment = new TabHero();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tab_hero, container, false);
// Calling the RecyclerView
mRecyclerView = (RecyclerView) v.findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);
// The number of Columns
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new GridAdapter(getContext());
mRecyclerView.setAdapter(mAdapter);
return v;
}
}
我做错了什么?
【问题讨论】:
-
根据您想要开始活动的第一个位置的代码,对吗?有关更多信息,您是否在清单中注册了 Wolverine 活动
-
@Pavan,天哪!那是唯一的问题!斯帕西博!
标签: android android-activity android-recyclerview