我正在尝试实现一种处理项目选择的方法RecyclerView.我个人不喜欢在通过手势的一些答案中建议的方式,我认为实施一个OnClickListener,如这里和这里所建议的那样,更清洁.
事实是......这种模式实际上并不起作用!我真的无法理解,为什么我OnClickListener.onClick是永远不会被调用.它有点像另一种方法拦截点击之前onClick可以处理它.
这是我的代码:
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView tvName;
ImageView star;
public ViewHolder(View itemView) {
super(itemView);
tvName = (TextView) itemView.findViewById(R.id.CHAT_ITEM_name);
star = (ImageView) itemView.findViewById(R.id.CHAT_ITEM_star);
Fonts.setTypeface(tvName, regular);
}
@Override
public void onClick(View view) {
int position = getLayoutPosition();
select(position);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,能够访问整个数据集中被点击项目的位置非常重要,以便将其删除,所以做一些类似的事情indexOfChild也是不可接受的:我试过了,但是这个方法可以为你提供项目的位置在列表的可见部分中,因此变得list.remove(position)不可能.
我使用RecyclerView适配器来显示活动内部的数据,我想onClickListener在活动内部实现,目前,我onClickListener正常设置内部适配器,工作正常.
public void onBindViewHolder(MyHolder holder, final int position) {
final Listdata data = listdata.get(position);
holder.vname.setText(data.getName());
holder.vname.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(activity, "clicked on " +position, Toast.LENGTH_SHORT).show();
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是我想在活动中实现它,所以我有更大的控制权.这不符合我的目的.我认为这对我们很多人都有用.
我基本上要做的是让回收器视图中显示的对象可以点击某个TextView id,因为我正在制作一个程序,在列表中显示一个专辑封面及其旁边的标题.我需要能够点击回收者视图所做的每一个方框,并在点击时弹出带有其他信息(作者,发布日期,热门歌曲等)的TextView,然后再按一个后退按钮(如果可以)回到专辑列表.我已经看了好几个小时,无法弄清楚如何让OnclickListener为它工作.如果您知道如何或有任何建议,我很高兴听到他们.谢谢!
package com.albumlist.albumlist;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private AlbumData[] itemsData;
public MyAdapter(AlbumData[] itemsData){
this.itemsData = itemsData;
}
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView txtViewTitle;
private ImageView imgViewIcon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
itemLayoutView.setOnClickListener(this);
txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.album_title);
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.album_icon);
}
@Override
public void onClick(View v) {
}
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup …Run Code Online (Sandbox Code Playgroud) java android onclicklistener android-studio android-recyclerview
我在片段中制作了一个水平回收视图.现在,当我点击任何项目时,我没有看到点击监听器工作.这是我的Adapter类的代码:
public class FeaturedProductsAdapter extends RecyclerView.Adapter<FeaturedProductsAdapter.CustomViewHolder> {
private List<FeaturedProductInfo> feedItemList;
private Context mContext;
public FeaturedProductsAdapter(Context context, List<FeaturedProductInfo> feedItemList) {
this.feedItemList = feedItemList;
this.mContext = context;
}
public class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected ImageView imageView;
protected TextView textView,priceView;
private Context context;
public CustomViewHolder(View view,Context context) {
super(view);
this.context=context;
this.imageView = (ImageView) view.findViewById(R.id.thumbnail);
this.textView = (TextView) view.findViewById(R.id.prodTitle);
this.priceView = (TextView) view.findViewById(R.id.prodPrice);
view.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int position = getLayoutPosition(); // gets item position
Log.e("Check", position …Run Code Online (Sandbox Code Playgroud) 我正在开发一个简单的记事本应用程序,我首先使用listView来显示所有注释.但现在我使用的是RecyclerView.当我使用listview时,我使用OnItemClickListener将数据传递给另一个活动来编辑注释现在我很困惑在Recylerview中做什么
对于listView我正在使用它
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
name = filenames.get(position).getName();
note = filenames.get(position).getShorttext();
Alert(); // this method is in main activity
}
});*/
public void Alert()
{
final AlertDialog dialog;
View mview = getLayoutInflater().inflate(R.layout.dialog_pass,null);
final EditText mEdittext = (EditText) mview.findViewById(R.id.Epass);
AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
mBuilder.setView(mview);
mBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String col = mEdittext.getText().toString();
String password = dBhelper.searchpass(col);
if (col.equals(password)) {
Intent …Run Code Online (Sandbox Code Playgroud) 因此,经过5个月的web开发,我需要回到android,但我注意到我的一些旧代码不再工作了.我有一个带有数据适配器的RecyclerView,但项目的onClickListener没有响应任何内容.这就是我的代码:
public class ProjectAdapter extends RecyclerView.Adapter<ProjectAdapter.ViewHolder> {
private List<Project> itemsData;
OnItemClickListener mItemClickListener;
public ProjectAdapter(List<Project> itemsData) {
this.itemsData = itemsData;
}
// Create new views (invoked by the layout manager)
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new views
View itemLayoutView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_layout, parent, false);
// create ViewHolder
ViewHolder vh = new ViewHolder(itemLayoutView);
return vh;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) { …Run Code Online (Sandbox Code Playgroud) 这是我的整个活动代码,如果nessery我也可以发布我的xml.
public class Main_Activityextends AppCompatActivity {
private RecyclerView recyclerview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
recyclerview.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
List<ExpandableListViewAdapter.Item> data = new ArrayList<>();
data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.HEADER, "Terms of usage"));
data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.CHILD, "never eat"));
data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.CHILD, "bluhhhhh"));
recyclerview.setAdapter(new ExpandableListViewAdapter(data));
recyclerview.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
代码在没有的情况下完美运行clickListener,但我希望在点击某个阵列的某个孩子时发生一个动作,但是现在它说Cannot resolve method setOnChildClickListener(anonymous android.widget.ExpendableListView.OnChildClickListener)虽然这recycleView是我的Adapter,但任何帮助都将受到赞赏
我是android开发的新手,我遇到了这3个不同的选项ListView,AbsListView和RecyclerView来在android中创建一个List.这3个有什么区别.
我在recyelerview.viewholder类的onClick()方法中尝试了如下.
示例中使用的SampleDialogFragment扩展了DialogFragment.
@Override
public void onClick(View v)
{
SampleDialogFragment df= new SampleDialogFragment();
df.show(v.getContext().getSupportFragmentManager(), "Dialog");
}
Run Code Online (Sandbox Code Playgroud)
我正面临着问题v.getContext().getSupportFragmentManager().我无法调用getSupportFragmentManager().
我也试过如下.
@Override
public void onClick(View v)
{
SampleDialogFragment df= new SampleDialogFragment();
SampleActivity activity = new SampleActivity();
df.show(activity.getSupportFragmentManager(), "Dialog");
}
Run Code Online (Sandbox Code Playgroud)
SampleActivity是回收器视图附加的活动.它没有显示错误.当我运行应用程序并崩溃.
日志显示活动已经破坏.
有解决方案吗
android android-dialogfragment dialogfragment android-recyclerview
我正在做的任务,我需要在点击后显示一个对话框EditText.在该对话框中,我使用RadioButtons 显示内容RecyclerView.
现在,我想要做的是,在从对话框中选择RadioButton(在RecyclerView中的内容)之后,它应该返回该内容的值,然后应该关闭对话框.
为了生成一个对话框我用了一个DialogFragment.
由于我是android开发的新手,我完全感到困惑,无法找到解决方案.