如何添加clicklistener为点击时,我想他们每个人的每个项目
我这里有一个数组列表,如何添加clicklistener为点击时,我想他们每个人的每个项目
,他们会做一个特定功能或目的的活动。
当前:每个项目包含ImageButton和列表中的Textview。
import android.os.Bundle; import android.support.annotation.Nullable; 
import android.support.design.widget.BottomSheetDialogFragment; 
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 java.util.ArrayList; 
import java.util.List; 
public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment { 
    String mString; 
    private RecyclerView mRecyclerView; 
    private VerticalListAdapter mVerticalListAdapter; 
    static MyBottomSheetDialogFragment newInstance(String string) { 
     MyBottomSheetDialogFragment f = new MyBottomSheetDialogFragment(); 
     Bundle args = new Bundle(); 
     args.putString("string", string); 
     f.setArguments(args); 
     return f; 
    } 
    @Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mString = getArguments().getString("string"); 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.bottom_sheet_modal_list, container, false); 
     mRecyclerView = (RecyclerView) v.findViewById(R.id.recycler_view); 
     return v; 
    } 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     List<Model> list = new ArrayList<Model>(); 
     list.add(new Model(R.drawable.a1, "Call")); 
     list.add(new Model(R.drawable.a2, "Chat")); 
     list.add(new Model(R.drawable.a3, "Android")); 
     list.add(new Model(R.drawable.a4, "Location")); 
     list.add(new Model(R.drawable.a5, "Call")); 
     list.add(new Model(R.drawable.a6, "Chat")); 
     list.add(new Model(R.drawable.a7, "Android")); 
     mVerticalListAdapter = new VerticalListAdapter(getContext(), list); 
     LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false); 
     mRecyclerView.setLayoutManager(linearLayoutManager); 
     mRecyclerView.setAdapter(mVerticalListAdapter); 
    } 
我可以提供额外的XML,即相对连接到该代码项目的Java代码,请留下澄清评论。
import android.content.Context; import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageButton; 
import android.widget.TextView; 
import java.util.List; 
public class VerticalListAdapter extends RecyclerView.Adapter<VerticalListAdapter.MyViewHolder>{ 
    private Context mContext; 
    private List<Model> mModelList; 
    public VerticalListAdapter(Context context, List<Model> list) { 
     this.mContext = context; 
     this.mModelList = list; 
    } 
    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.modal_list_item, parent, false); 
     return new MyViewHolder(itemView); 
    } 
    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     holder.txtView.setText(mModelList.get(position).getName()); 
     holder.imgView.setImageDrawable(mContext.getResources().getDrawable(mModelList.get(position).getImgId())); 
    } 
    @Override 
    public int getItemCount() { 
     return mModelList.size(); 
    } 
    public class MyViewHolder extends RecyclerView.ViewHolder { 
     public TextView txtView; 
     public ImageButton imgView; 
     public MyViewHolder(View view) { 
      super(view); 
      txtView = (TextView) view.findViewById(R.id.txtView); 
      imgView = (ImageButton) view.findViewById(R.id.imgView); 
     } 
    } 
} 
回答:
你需要做的是落实OnClickListener您Holder类,并加上id modal_list_item.xml你的LinearLayout这样你就可以点击整个布局,不仅自己的观点(如果我理解正确的话)并最终设置onClickListener。
当你这样做时,你需要实现onClick方法。灵感请参阅下面的代码:
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {     public TextView txtView; 
    public ImageButton imgView; 
    private LinearLayout linearLayout; 
    public MyViewHolder(View view) { 
     super(view); 
     txtView = (TextView) view.findViewById(R.id.txtView); 
     imgView = (ImageButton) view.findViewById(R.id.imgView); 
     linearLayout = (LinearLayout) view.findViewById(R.id.linear_l); 
     linearLayout.setOnClickListener(this); 
    } 
    @Override 
    public void onClick(View v) { 
     Log.i("RecyclerView Item", String.valueOf(getLayoutPosition())); 
     mModelList.remove(getLayoutPosition()); 
     notifyDataSetChanged(); 
    } 
} 
以上是 如何添加clicklistener为点击时,我想他们每个人的每个项目 的全部内容, 来源链接: utcz.com/qa/261410.html

