我想用android studio中的gridmenu制作一个应用程序。我已经做了一个设计,但是我不能用它进行意图的活动。如何通过此代码从Recyclerview和cardview进行意图活动:
PlaylistAdapter.java:
public class PlaylistAdapter extends RecyclerView.Adapter<PlaylistViewHolder>{
private static final String TAG = PlaylistAdapter.class.getSimpleName();
private Context context;
private List<PlaylistObject> playlists;
public PlaylistAdapter(Context context, List<PlaylistObject> playlists) {
this.context = context;
this.playlists = playlists;
}
@Override
public PlaylistViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.play_list_layout, parent, false);
return new PlaylistViewHolder(view);
}
@Override
public void onBindViewHolder(PlaylistViewHolder holder, int position) {
PlaylistObject playlistObject = playlists.get(position);
holder.playlistTitle.setText(playlistObject.getPlaylistTitle());
holder.playlistCover.setImageResource(playlistObject.getPlaylistCover());
}
@Override
public int getItemCount() {
return playlists.size();
}
}
PlaylistFragment.java:
public class PlaylistFragment extends Fragment {
public PlaylistFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_playlist, container, false);
RecyclerView playlisRecyclerView = (RecyclerView)view.findViewById(R.id.your_play_list);
GridLayoutManager gridLayout = new GridLayoutManager(getActivity(), 2);
playlisRecyclerView.setLayoutManager(gridLayout);
playlisRecyclerView.setHasFixedSize(true);
PlaylistAdapter mAdapter = new PlaylistAdapter(getActivity(), getTestData());
playlisRecyclerView.setAdapter(mAdapter);
return view;
}
public List<PlaylistObject> getTestData() {
List<PlaylistObject> trackList = new ArrayList<PlaylistObject>();
trackList.add(new PlaylistObject("My Account", "12 tracks", R.drawable.prf1));
trackList.add(new PlaylistObject("My Teacher", "12 tracks", R.drawable.teacher));
trackList.add(new PlaylistObject("Falling over", "12 tracks", R.drawable.album2));
trackList.add(new PlaylistObject("Falling over", "12 tracks", R.drawable.album2));
}
}
fragment_playlist.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.inducesmile.androidmusicplayer
.fragment.PlaylistFragment">
<android.support.v7.widget.RecyclerView
android:id="@+id/your_play_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/_10sdp"
android:scrollbars="none" />
</LinearLayout>
playlist_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/item_list"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_marginBottom="@dimen/_8sdp"
android:paddingLeft="@dimen/_4sdp"
android:paddingRight="@dimen/_4sdp"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/play_list_cover"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:padding="20dp"
android:src="@drawable/prf1"
android:contentDescription="@string/app_name"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:orientation="vertical">
<TextView
android:id="@+id/play_list_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:text="@string/profile"
android:textColor="@color/colorWhite"/>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
有人可以帮助我吗? 谢谢
答案 0 :(得分:1)
public class PlaylistAdapter extends RecyclerView.Adapter<PlaylistViewHolder> {
private static final String TAG = PlaylistAdapter.class.getSimpleName();
private Context context;
private List<PlaylistObject> playlists;
private OnItemClickListener mOnItemClickListener;
public PlaylistAdapter(Context context, List<PlaylistObject> playlists) {
this.context = context;
this.playlists = playlists;
}
// Set the click listener
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
@Override
public PlaylistViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.play_list_layout, parent, false);
return new PlaylistViewHolder(view);
}
@Override
public void onBindViewHolder(PlaylistViewHolder holder, int position) {
PlaylistObject playlistObject = playlists.get(position);
holder.playlistTitle.setText(playlistObject.getPlaylistTitle());
holder.playlistCover.setImageResource(playlistObject.getPlaylistCover());
// Whole item
holder.itemView.setOnClickListener(new View.OnClickListener {
@Override
public void onClick(View v) {
if(mOnItemClickListener != null) {
mOnItemClickListener.onItemClick();
}
}
});
// Or Title
holder.playlistTitle.setOnClickListener(new View.OnClickListener {
@Override
public void onClick(View v) {
if(mOnItemClickListener != null) {
mOnItemClickListener.onItemClick();
}
}
});
// Or Cover
holder.playlistCover.setOnClickListener(new View.OnClickListener {
@Override
public void onClick(View v) {
if(mOnItemClickListener != null) {
mOnItemClickListener.onItemClick();
}
}
});
}
@Override
public int getItemCount() {
return playlists.size();
}
// The Item click listener
public interface OnItemClickListener {
void onItemClick();
}
}
适配器添加一个OnItemClickListener,然后Fragment实现此监听器
public class PlaylistFragment extends Fragment implements PlaylistAdapter.OnItemClickListener {
public PlaylistFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_playlist, container, false);
RecyclerView playlisRecyclerView = (RecyclerView)view.findViewById(R.id.your_play_list);
GridLayoutManager gridLayout = new GridLayoutManager(getActivity(), 2);
playlisRecyclerView.setLayoutManager(gridLayout);
playlisRecyclerView.setHasFixedSize(true);
PlaylistAdapter mAdapter = new PlaylistAdapter(getActivity(), getTestData());
// Set the click listener
mAdapter.setOnItemClickListener(this);
playlisRecyclerView.setAdapter(mAdapter);
return view;
}
public List<PlaylistObject> getTestData() {
List<PlaylistObject> trackList = new ArrayList<PlaylistObject>();
trackList.add(new PlaylistObject("My Account", "12 tracks", R.drawable.prf1));
trackList.add(new PlaylistObject("My Teacher", "12 tracks", R.drawable.teacher));
trackList.add(new PlaylistObject("Falling over", "12 tracks", R.drawable.album2));
trackList.add(new PlaylistObject("Falling over", "12 tracks", R.drawable.album2));
}
@Override
public void onItemClick() {
// Do what you want do
//startActivity(new Intent(getActivity(), XXXXActivity.class));
}
}