【发布时间】:2015-12-09 05:44:28
【问题描述】:
我有一个带有 onClick 的工作 RecyclerView,带有回收站项目(视图)和一个复选框。但我的要求是根据我的适配器的 recyclerview 项目位置传递数据并在 onClick 中启动下一个活动。
但是当我在我的适配器中为意图编码时,它显示cannot resolve symbol。
以及我如何知道recyclerview 项目的位置。
请任何人帮助解决我的错误。
包含 Recyclerview 的 Fragment 类。
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.root5solutions.mirrealtors.R;
import com.example.root5solutions.mirrealtors.projectdatabase.HomeManager;
public class RecyclerTab1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.home_tab1_recycler, container, false);
RecyclerView rv = (RecyclerView) v.findViewById(R.id.home_recyclerview);
LinearLayoutManager llm = new LinearLayoutManager(getContext());
rv.setLayoutManager(llm);
rv.setItemAnimator(new DefaultItemAnimator());
rv.setHasFixedSize(true); // to improve performance
rv.setAdapter(new HomeManager()); // the projectdatabase manager is assigner to the RV
return v;
}
}
RecyclerView 适配器
import android.graphics.Bitmap;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.root5solutions.mirrealtors.R;
import java.util.Arrays;
public class HomeManager extends RecyclerView.Adapter<HomeManager.RecyclerViewHolder> {
public static class RecyclerViewHolder extends RecyclerView.ViewHolder {
TextView mProjectName, mProjectCity, mProjectType;
ImageView mImage;
CheckBox mCheck;
RelativeLayout mProjectStatus;
RecyclerViewHolder(View itemView) {
super(itemView);
mProjectName = (TextView) itemView.findViewById(R.id.PROJECT_name);
mProjectCity = (TextView) itemView.findViewById(R.id.PROJECT_city);
mProjectType = (TextView) itemView.findViewById(R.id.PROJECT_type);
mImage = (ImageView) itemView.findViewById(R.id.PROJECT_image);
mCheck = (CheckBox) itemView.findViewById(R.id.PROJECT_fav);
mProjectStatus = (RelativeLayout) itemView.findViewById(R.id.label);
}
}
private final View.OnClickListener mOnClickListener = new MyOnClickListener();
@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recyclerview_item, viewGroup, false);
v.setOnClickListener(mOnClickListener);
return new RecyclerViewHolder(v);
}
@Override
public void onBindViewHolder(final RecyclerViewHolder viewHolder, int i) {
// get the single element from the main array
final HomeData projects = HomeData.PROJECTS[i];
// Set the values
viewHolder.mProjectName.setText(projects.get(HomeData.Field.NAME));
viewHolder.mProjectCity.setText(projects.get(HomeData.Field.CITY));
viewHolder.mProjectType.setText(projects.get(HomeData.Field.TYPE));
viewHolder.mImage.setImageResource(projects.geti(HomeData.Field.IMAGE));
viewHolder.mCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar snackbar = Snackbar.make(v, "Item Favorited", Snackbar.LENGTH_SHORT);
snackbar.show();
}
});
}
@Override
public int getItemCount() {
return HomeData.PROJECTS.length;
}
private class MyOnClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
// Intent intent = new Intent(??, ProjectRecyclerDetailActivity.class);
// intent.putExtra(ProjectRecyclerDetailActivity.ID, ProjectData.PROJECTs[position].getId());
// startActivity(intent);
Snackbar snackbar = Snackbar.make(v, "Item Clicked", Snackbar.LENGTH_SHORT);
snackbar.show();
}
}
}
【问题讨论】:
-
你应该创建一个具有上下文的构造函数......并且你可以在意图中使用该上下文
-
如果你只是想知道位置然后在方法 onBindViewHolder(final RecyclerViewHolder viewHolder, int i) {......... i in signature代表位置.....跨度>
标签: android android-intent android-recyclerview