主Activity
public class MainActivity extends AppCompatActivity {
private ListView listView;
private ArrayList<FunctionBean> dataList;
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listView);
initData();
myAdapter = new MyAdapter();
listView.setAdapter(myAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
myAdapter.onClick(position);
}
});
}
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return dataList != null ? dataList.size() : 0;
}
@Override
public FunctionBean getItem(int position) {
if (position < 0 && position >= dataList.size()) {
return null;
}
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new MyViewHolder(parent);
} else {
viewHolder = (MyViewHolder) convertView.getTag();
}
bindData(viewHolder, position);
return viewHolder.get();
}
private void bindData(MyViewHolder viewHolder, int position) {
if (viewHolder == null) {
return;
}
viewHolder.ivImage.setBackgroundResource(getItem(position).getFunctionId());
viewHolder.tvText.setText(getItem(position).getFunctionName());
}
public void onClick(int position) {
FunctionBean item = getItem(position);
item.onClik();
}
}
static class MyViewHolder {
ImageView ivImage;
TextView tvText;
View convertView;
public MyViewHolder(ViewGroup parent) {
convertView = View.inflate(parent.getContext(), R.layout.function_adapter, null);
ivImage = convertView.findViewById(R.id.ivImage);
tvText = convertView.findViewById(R.id.tvText);
convertView.setTag(this);
}
View get() {
return convertView;
}
}
private void initData() {
dataList = dataList == null ? new ArrayList<FunctionBean>() : dataList;
dataList.clear();
dataList.add(createFunctionBean(R.drawable.ic_launcher_foreground, "音量", () -> Toast.makeText(MainActivity.this, "音量", Toast.LENGTH_SHORT).show()));
dataList.add(createFunctionBean(R.drawable.ic_launcher_foreground, "键盘", () -> Toast.makeText(MainActivity.this, "键盘", Toast.LENGTH_SHORT).show()));
}
private FunctionBean createFunctionBean(int functionId, String functionName, FunctionBean.Listener listener) {
return new FunctionBean(functionId, functionName, listener);
}
}
构造模型数据
package com.example.testdemo;
public class FunctionBean {
private int functionId;
private String functionName;
private Listener listener;
public FunctionBean(int functionId, String functionName, Listener listener) {
this.functionId = functionId;
this.functionName = functionName;
this.listener = listener;
}
public int getFunctionId() {
return functionId;
}
public void setFunctionId(int functionId) {
this.functionId = functionId;
}
public String getFunctionName() {
return functionName;
}
public void setFunctionName(String functionName) {
this.functionName = functionName;
}
public void onClik() {
if (listener != null){
listener.onClick();
}
}
public interface Listener {
void onClick();
}
}