在旧代码中,当我使用ListView
与自定义适配器时,我可以使用此代码获取项目。
Message msg = (Message) adapter.getItem(poistion);
现在我正在实现RecyclerView
。如何从<代码>回收视图中获取项目。适配器?
我的听众做到了
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;
}
}
}
我认为getItem()
的正确方法是通过RecyclerView LayoutManager
。
View v = recyclerView.getLayoutManager().findViewByPosition(position);
你必须自己实现它。
在自定义适配器中添加一个新方法,就完成了。
public Message getItem(int position) {
return messageList.get(position);
}
AdapterClass: 提前感谢你的帮助。
我有一个连接到CustomAdapter的ListView。在Adapter类中,我有不同视图的侦听器。当某些事情发生变化时,它会更新ListItem的值 现在我不知道如何将这些信息返回到包含ListView的片段中。我试过了 但它不会对适配器内的任何更改作出反应。仅限于片段本身的更改(如单击添加新项的按钮)。 我还想知道如何获取适配器类中最新ArrayList的引用,以便将其返回到片段。 我希望
我想从我的回收器视图中的给定项目位置获取视图,但持有者总是为空,我不知道为什么。
Iam使用RecolyerView并通过notifyItemChanged()更新数据时使用linearlayoutmanager使用RecolyerView从套接字更新数据时使用适配器更新RecolyerNotifyItemChanged()套接字每秒发送许多数据,这意味着我每秒多次调用适配器它正在工作,但当更新次数更多时会出现此错误 异常java.lang.IllegalStateExcept
我有一个使用RecyclerView的列表,我想要的是,当我点击列表项时,它会打开一个片段,我一直在搜索,我只在一个活动中找到了它,但我只在片段中工作,如果我使用活动,它会随着我的操作栏消失,它都在片段中设置。 这是我的适配器类: 我需要将信用卡id发送到片段,调用控制器并从数据库中获取信息,我尝试了使用intent,但只有在使用startActivity(intent)调用活动时才有效。 这里是
在recyclerView中获取已点击项目的位置,我在recyclerView中创建cardview和链接 我想获取位置,将开关盒设置为每个卡视图的意向活动 当我点击card view I时,他会打开另一个页面,当你点击card view 2时,他会打开另一个页面。 看看我的密码 在recyclerView中获取已点击项目的位置,我在recyclerView中创建cardview和链接 我想获取位