我需要从onBindViewHolder
适配器的recycler
调用Intent,来自ViewHolder
中某个视图的点击事件。我无法直接这样做..
public void onBindViewHolder(MyAdapter.MyViewHolder viewHolder, int i) {
viewHolder.button.setonClickListener(new View.onClickListener(
@Override
onClick(View v) {
Intent i=new Intent();
i.setAction("Intent.ACTION_CALL");
i.setData(Uri.parse("tel:1234567890"));
startActivity(i);
}
));
}
这不起作用。它一直在抛出错误。然后我在Activity中使用相同的代码创建了一个公共方法。在适配器构造函数中传递了Activity上下文。然后从按钮单击事件调用方法如下。
((MyActivity)context).makePhoneCall("1234567890");
这就是诀窍。但我觉得应该有一个更好的方法来做到这一点。 由于我主要来自C背景,我不确定。 因此,根据Java编程惯例,我的问题是有更好或更合适的方法。
答案 0 :(得分:1)
如果您需要通过Intent调用其他活动,则可以使用任何视图<div id="grid"></div>
<script>
$("#grid").kendoGrid({
columns: [
{ hidden: true, field: "id" },
{ field: "name" }
],
dataSource: [ { id: 1, name: "Jane Doe" }, { id: 2, name: "John Doe" } ]
});
</script>
:
Context
我认为这是一种正确的方法。
答案 1 :(得分:1)
另一种方法是在recycleradapter中实现一个监听器并在活动中监听它。
所以在适配器中:
public class RecyclerAdapter .... {
private MyClickListener listener;
public void onBindViewHolder(MyAdapter.MyViewHolder viewHolder, int i) {
viewHolder.button.setonClickListener(new View.onClickListener(
@Override
onClick(View v) {
listener.onClicked(true);
}
));
public void setMyClickListener(MyClickListener listener) {
this.listener = listener;
}
}
//创建MyClickListener.class
public interface MyClickListener {
public void onClicked(boolean status);
}
在您的活动中:
public class MainActivity ... implements MyClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
adapter.setMyClickListener(this);
}
@Override
onClick(boolean status) {
if (status){
Intent i=new Intent();
i.setAction("Intent.ACTION_CALL");
i.setData(Uri.parse("tel:1234567890"));
startActivity(i);
};
}
}
答案 2 :(得分:0)
试试这个 在适配器中:
Activity mContext;
public FollowersAdapter(Activity mContext) {
this.mContext = mContext;
}
//然后点击onBindViewHolder
holder.linear_user.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("linear click>>>>>>>>>>>>");
Intent ToImage = new Intent(mContext, UserData.class);
ToImage.putExtra("user_id", data.get(position).getFollower_id());
mContext.startActivity(ToImage);
}
});