Android 如何从 RecyclerView 适配器获取项目
How to get item from RecyclerView adapter in Android
在旧代码中,当我将 ListView
与自定义适配器一起使用时,我可以使用此代码获取项目。
Message msg = (Message) adapter.getItem(poistion);
现在我正在实施RecyclerView
。如何从 RecyclerView.adapter
获取项目?
你必须自己实现它。
在您的自定义适配器中添加一个新方法,您就完成了。
public Message getItem(int position) {
return messageList.get(position);
}
我认为 getItem()
的正确方法是 RecyclerView LayoutManager
。
View v = recyclerView.getLayoutManager().findViewByPosition(position);
在 recycleview 中,您可以使用以下代码从 RecyclerView 适配器获取项目,
RecyclerView rv_list_frames;
public frames getItem(int position) {
return rv_list_frames.get(position);
}
希望以上内容能帮到您获取物品..
Onclicklistener 成功了
public class MainActivity extends AppCompatActivity {
Context context;
RecyclerView recyclerView;
RelativeLayout relativeLayout;
RecyclerView.Adapter recyclerviewAdapter;
RecyclerView.LayoutManager recyclerViewLayoutManager;
String[] numbers = { "ANDROID",
"PHP",
"BLOGGER",
"WORDPRESS",
"JOOMLA",
"ASP.NET",
"JAVA",
"C++",
"MATHS",
"HINDI",
"ENGLISH"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout1);
recyclerView = (RecyclerView)findViewById(R.id.recyclerview1);
recyclerViewLayoutManager = new LinearLayoutManager(context);
recyclerView.setLayoutManager(recyclerViewLayoutManager);
recyclerviewAdapter = new RecyclerViewAdapter(context,numbers);
recyclerView.setAdapter(recyclerviewAdapter);
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
String[] numvalues;
Context context;
View view1;
ViewHolder viewHolder1;
TextView textView;
public RecyclerViewAdapter(Context context1,String[] numvalues1){
numvalues = numvalues1;
context = context1;
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView textView;
public ViewHolder(View v){
super(v);
textView = (TextView)v.findViewById(R.id.number_textview);
}
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
view1 = LayoutInflater.from(context).inflate(R.layout.recyclerview_items,parent,false);
// view1.setOnClickListener(new MyOnClickListener());
view1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int itemPosition = recyclerView.indexOfChild(v);
// Toast.makeText(MainActivity.this,"Selected item position is---"+ itemPosition,Toast.LENGTH_SHORT).show();
textView = (TextView)v.findViewById(R.id.number_textview);
Toast.makeText(MainActivity.this,"Selected val of clicked position is---"+ textView.getText().toString(),Toast.LENGTH_SHORT).show();
}
});
viewHolder1 = new ViewHolder(view1);
return viewHolder1;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textView.setText(numvalues[position]);
}
@Override
public int getItemCount() {
return numvalues.length;
}
}
}
@Override public void onClick(View view, int position) {
System.out.println("cardetail_activity"+position);
Intent i = new Intent(getActivity(), CarDetail.class);
ListingDataprovider data_provider=arrayList.get(position); i.putExtra("ID",data_provider.getId()); getActivity().startActivity(i);
}
在旧代码中,当我将 ListView
与自定义适配器一起使用时,我可以使用此代码获取项目。
Message msg = (Message) adapter.getItem(poistion);
现在我正在实施RecyclerView
。如何从 RecyclerView.adapter
获取项目?
你必须自己实现它。
在您的自定义适配器中添加一个新方法,您就完成了。
public Message getItem(int position) {
return messageList.get(position);
}
我认为 getItem()
的正确方法是 RecyclerView LayoutManager
。
View v = recyclerView.getLayoutManager().findViewByPosition(position);
在 recycleview 中,您可以使用以下代码从 RecyclerView 适配器获取项目,
RecyclerView rv_list_frames;
public frames getItem(int position) {
return rv_list_frames.get(position);
}
希望以上内容能帮到您获取物品..
Onclicklistener 成功了
public class MainActivity extends AppCompatActivity {
Context context;
RecyclerView recyclerView;
RelativeLayout relativeLayout;
RecyclerView.Adapter recyclerviewAdapter;
RecyclerView.LayoutManager recyclerViewLayoutManager;
String[] numbers = { "ANDROID",
"PHP",
"BLOGGER",
"WORDPRESS",
"JOOMLA",
"ASP.NET",
"JAVA",
"C++",
"MATHS",
"HINDI",
"ENGLISH"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout1);
recyclerView = (RecyclerView)findViewById(R.id.recyclerview1);
recyclerViewLayoutManager = new LinearLayoutManager(context);
recyclerView.setLayoutManager(recyclerViewLayoutManager);
recyclerviewAdapter = new RecyclerViewAdapter(context,numbers);
recyclerView.setAdapter(recyclerviewAdapter);
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
String[] numvalues;
Context context;
View view1;
ViewHolder viewHolder1;
TextView textView;
public RecyclerViewAdapter(Context context1,String[] numvalues1){
numvalues = numvalues1;
context = context1;
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView textView;
public ViewHolder(View v){
super(v);
textView = (TextView)v.findViewById(R.id.number_textview);
}
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
view1 = LayoutInflater.from(context).inflate(R.layout.recyclerview_items,parent,false);
// view1.setOnClickListener(new MyOnClickListener());
view1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int itemPosition = recyclerView.indexOfChild(v);
// Toast.makeText(MainActivity.this,"Selected item position is---"+ itemPosition,Toast.LENGTH_SHORT).show();
textView = (TextView)v.findViewById(R.id.number_textview);
Toast.makeText(MainActivity.this,"Selected val of clicked position is---"+ textView.getText().toString(),Toast.LENGTH_SHORT).show();
}
});
viewHolder1 = new ViewHolder(view1);
return viewHolder1;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textView.setText(numvalues[position]);
}
@Override
public int getItemCount() {
return numvalues.length;
}
}
}
@Override public void onClick(View view, int position) {
System.out.println("cardetail_activity"+position);
Intent i = new Intent(getActivity(), CarDetail.class);
ListingDataprovider data_provider=arrayList.get(position); i.putExtra("ID",data_provider.getId()); getActivity().startActivity(i);
}