我想将“项目单击侦听器”添加到我的RecyclerView
中,这样当我单击某个项目时,它将启动一个新的Intent
并从web服务器检索有关该项目的数据。我试过很多建议,但没有一个有用。
我的RecylerView类
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);
}
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);
}
}
}
实现recyclerview的项单击的最简单方法是在适配器的OnBindViewWholder方法中实现。
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {
vh.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//use position value to get clicked data from list
}
});
}
问题内容: 我正在 RecyclerView上* 工作,并尝试使用 Interface来 对recyclcerview的每个项目使用点击监听器 * 这是我的活动课: 这是我的适配器类 最后我将这个接口用于侦听器: 此过程可以正常运行我的应用程序的所有其他部分,但不适用于这种情况。我不知道问题出在哪里。请帮我 。 问题答案: 您这种方法:
问题内容: 我正在探索,惊讶地发现那没有。 我有两个问题。 主要问题 我想知道为什么删除了? 是否存在性能问题或其他问题? 次要问题 我解决我的问题写我的: 这样可以/有更好的方法吗? 问题答案:
所以,经过5个月的Web开发,我需要重新使用android,但我发现我的一些旧代码已经不能工作了。我有一个带有数据适配器的RecyclerView,但项目的onClickListener没有任何响应。这是我的代码的样子: ProjectsActivity.java 列表显示出来,点击不起作用,甚至连到控制台的日志都没有。有人知道我做错了什么吗?我使用SDKV23作为编译SDK版本。我的SDK最低版
我正在尝试创建一个ListView,它的每一行都是一个水平滚动列表。早些时候,我使用的是HorizontalScrollView,但我需要一个可以回收视图的布局。所以我使用了RecyclerView,但是现在RecyclerView的内容不可见了。 下面是我的垂直ListView适配器: 下面是我的水平回收视图适配器: 下面是ListView行的布局: 当我使用HorizontalScrollVi
问题内容: 我有一个自定义我在我农具。 问题是该方法从未调用过。我想我需要在我的主适配器而不是自定义适配器中实现它。 MyListViewAdapter.java : 我对吗? 问题答案: 为什么在适配器内部会有OnItemClickListener?您可能在Adapter内有OnClickListener,或者最佳实践是将OnItemClickListener设置为ListView或您在活动/片
本文向大家介绍Android ListView的OnItemClickListener详解,包括了Android ListView的OnItemClickListener详解的使用技巧和注意事项,需要的朋友参考一下 我们在使用ListView的时候,一般都会为ListView添加一个响应事件android.widget.AdapterView.OnItemClickListener。本文主要在于对