2016-11-17 5 views
1

Ich habe jetzt eine Reihe von verschiedenen Methoden ausprobiert, und es ist mir nicht gelungen, eine Onclick-Methode zu meinem recycleview zu implementieren. Meine Recyclingansicht funktioniert und zeigt meine Artikel an.Recycleview mit onclick assistance

Kann mir jemand bei der Implementierung einer Onclick-Methode in meinem Recycling-View helfen?

Danke im Voraus.

// Dave

Hier ist mein Adapter:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { 
private ItemData[] itemsData; 
public OnClickListener mOnClickListener; 

public MyAdapter(ItemData[] itemsData) { 
    this.itemsData = itemsData; 
} 

// Create new views (invoked by the layout manager) 
@Override 
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, 
               int viewType) { 
    // create a new view 
    View itemLayoutView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.item_layout, null); 

    // create ViewHolder 

    ViewHolder viewHolder = new ViewHolder(itemLayoutView); 
    return viewHolder; 
} 

// Replace the contents of a view (invoked by the layout manager) 
@Override 
public void onBindViewHolder(ViewHolder viewHolder, int position) { 



viewHolder.txtViewTitle.setText(itemsData[position].getTitle()); 
    viewHolder.imgViewIcon.setImageResource(itemsData[position].getImageUrl()); 


} 

// inner class to hold a reference to each item of RecyclerView 
public static class ViewHolder extends RecyclerView.ViewHolder { 

    public TextView txtViewTitle; 
    public ImageView imgViewIcon; 

    public ViewHolder(View itemLayoutView) { 
     super(itemLayoutView); 
     txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.item_title); 
     imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon); 
    } 
} 

// Return the size of your itemsData (invoked by the layout manager) 
@Override 
public int getItemCount() { 
    return itemsData.length; 
} 

Hier ist die Artikeldaten:

public class ItemData { 

private String title; 
private int imageUrl; 

public ItemData(String title,int imageUrl){ 

    this.title = title; 
    this.imageUrl = imageUrl; 
} 

public String getTitle() { 
    return title; 
} 

public void setTitle(String title) { 
    this.title = title; 
} 

public int getImageUrl() { 
    return imageUrl; 
} 

Und mein Fragment, wo die Elemente erstellt werden:

public class MyMedicinFrag extends Fragment { 

@Override 
public View onCreateView(LayoutInflater i, ViewGroup container, Bundle savedInstanceState) { 
    View rod = i.inflate(R.layout.fragment_mymedicin, container, false); 


    RecyclerView recyclerView = (RecyclerView) rod.findViewById(R.id.recyclerView); 
    FloatingActionButton fabBtn = (FloatingActionButton) rod.findViewById(R.id.fab); 
    fabBtn.show(); 

    ItemData itemsData[] = { 
      new ItemData("Panodil 500 mg", R.drawable.panodil), 
      new ItemData("Ipren 200 mg", R.drawable.ipren), 
      new ItemData("Madopar 200 mg", R.drawable.madopar), 
      new ItemData("Diclofenac 50 mg", R.drawable.diclofenac), 
      new ItemData("Allopurinol 300 mg", R.drawable.allopurinol) 
    }; 

    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

    MyAdapter mAdapter = new MyAdapter(itemsData); 
    recyclerView.setAdapter(mAdapter); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 

    return rod; 

}} 

Antwort

0

in Ihrem onCreateViewHolder() verwenden Sie diesen Code:

View view = LayoutInflater.from(mContext).inflate(R.layout.myview, parent, false); 

     view.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> arg0, View v, int position, long id) { 
       //do something on click 
       } 
      } 
     });