Ich möchte Element hinzufügen klicken Sie auf Listener zu meinem RecyclerView
, so dass, wenn ich auf ein bestimmtes Element klickt, startet es eine neue Intent
und ruft Daten von einem Webserver über dieses Element ab. Ich habe viele Vorschläge ausprobiert, aber keiner von ihnen hat geholfen.OnItemClickListener für eine RecyclerView
Meine RecylerView Klasse
public class GetPrice extends AppCompatActivity {
private RecyclerView recyclerView;
private GridLayoutManager gridLayoutManager;
private CustomAdapter adapter;
private List<MyData> dataList;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.getpricerecycle);
recyclerView =(RecyclerView) findViewById(R.id.recycler_view);
dataList = new ArrayList<>();
load_data_from_server(0);
gridLayoutManager = new GridLayoutManager(this,1);
recyclerView.setLayoutManager(gridLayoutManager);
adapter = new CustomAdapter(this,dataList);
recyclerView.setAdapter(adapter);
}
private void load_data_from_server(final int id) {
AsyncTask<Integer,Void,Void> task = new AsyncTask<Integer, Void, Void>() {
@Override
protected Void doInBackground(Integer... params) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("http://172.20.10.7/anfal/getPrice.php?id="+id).build();
try {
Response response = client.newCall(request).execute();
JSONArray array = new JSONArray(response.body().string());
for(int i=0;i<array.length();i++){
JSONObject jsonobject = array.getJSONObject(i);
MyData data=new MyData(jsonobject.getInt("id"),jsonobject.getString("name"),jsonobject.getString("price"),jsonobject.getString("image"));
dataList.add(data);
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
System.out.println("End Of Content");
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
adapter.notifyDataSetChanged();
}
};
task.execute(id);
}
hier ist mein coustm Adapter für den Recycler Ansicht
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
private Context context;
private List<MyData> my_data;
public CustomAdapter(Context context, List<MyData> my_data) {
this.context = context;
this.my_data = my_data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.getpricecardview,parent,false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.name.setText(my_data.get(position).getName());
holder.price.setText(my_data.get(position).getPrice());
@Override
public int getItemCount() {
return my_data.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public TextView price;
public ImageView imageview;
public ViewHolder(View itemView) {
super(itemView);
name=(TextView)itemView.findViewById(R.id.description);
price=(TextView) itemView.findViewById(R.id.nameofp);
imageview=(ImageView) itemView.findViewById(R.id.imgevie);
}
}
}
versuchen, diese Antwort https://stackoverflow.com/questions/28296708/get-clicked-item-and-its-position-in-recyclerview – nKalai
https://stackoverflow.com/a/35970486/1563038 –