android 弹出网格菜单,简单的Android网格示例,使用带有GridLayoutManager的回收视图...

虽然我很喜欢和欣赏苏拉奇答,我想留下一张便条,因为我发现编码适配器(MyRecyclerViewAdapter)来定义和公开侦听器方法。onItemClick这并不是最好的方法,因为没有正确地使用类封装。所以我的建议是让适配器单独处理监听操作(这是他的目的!)并将其与使用适配器 (MainActivity)。因此,我将这样设置Adapter类:

MyReccyclerViewAdapter.javapublic class MyRecyclerViewAdapter extends RecyclerView.Adapter {

private String[] mData = new String[0];

private LayoutInflater mInflater;

// Data is passed into the constructor

public MyRecyclerViewAdapter(Context context, String[] data) {

this.mInflater = LayoutInflater.from(context);

this.mData = data;

}

// Inflates the cell layout from xml when needed

@Override

public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = mInflater.inflate(R.layout.recyclerview_item, parent, false);

ViewHolder viewHolder = new ViewHolder(view);

return viewHolder;

}

// Binds the data to the textview in each cell

@Override

public void onBindViewHolder(ViewHolder holder, int position) {

String animal = mData[position];

holder.myTextView.setText(animal);

}

// Total number of cells

@Override

public int getItemCount() {

return mData.length;

}

// Stores and recycles views as they are scrolled off screen

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

public TextView myTextView;

public ViewHolder(View itemView) {

super(itemView);

myTextView = (TextView) itemView.findViewById(R.id.info_text);

itemView.setOnClickListener(this);

}

@Override

public void onClick(View view) {

onItemClick(view, getAdapterPosition());

}

}

// Convenience method for getting data at click position

public String getItem(int id) {

return mData[id];

}

// Method that executes your code for the action received

public void onItemClick(View view, int position) {

Log.i("TAG", "You clicked number " + getItem(position).toString() + ", which is at cell position " + position);

}}

请注意onItemClick中定义的MyRecyclerViewAdapter这是您希望为收到的事件/操作编写任务代码的地方。

要完成此转换,只需做一个小的更改:活动不需要实现MyRecyclerViewAdapter.ItemClickListener因为现在这完全是由适配器..这将是最后的修改:

MainActivity.javapublic class MainActivity extends AppCompatActivity {

MyRecyclerViewAdapter adapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// data to populate the RecyclerView with

String[] data = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48"};

// set up the RecyclerView

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rvNumbers);

int numberOfColumns = 6;

recyclerView.setLayoutManager(new GridLayoutManager(this, numberOfColumns));

adapter = new MyRecyclerViewAdapter(this, data);

adapter.setClickListener(this);

recyclerView.setAdapter(adapter);

}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值