在MainActivity 里,用 recyclerview ,simAdapter ,viewHolderListener ,写一个有十个列表项的点击事件代码,不用position
时间: 2024-02-24 19:59:27 浏览: 29
好的,这里是一个使用 `RecyclerView` 的示例代码:
```java
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private SimpleAdapter mSimAdapter;
private ArrayList<HashMap<String, String>> mDataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化数据
initData();
// 初始化RecyclerView
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mSimAdapter = new SimpleAdapter(mDataList);
mRecyclerView.setAdapter(mSimAdapter);
// 设置ViewHolder的点击事件
mSimAdapter.setViewHolderListener(new SimpleAdapter.ViewHolderListener() {
@Override
public void onItemClick(View view, int position) {
// 处理点击事件
Toast.makeText(MainActivity.this, "您点击了" + mDataList.get(position).get("title"), Toast.LENGTH_SHORT).show();
}
});
}
// 初始化数据
private void initData() {
mDataList = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
HashMap<String, String> map = new HashMap<>();
map.put("title", "标题" + i);
map.put("content", "内容" + i);
mDataList.add(map);
}
}
}
```
上面的代码中,我们使用了 `RecyclerView` 来展示数据,并通过自定义适配器 `SimpleAdapter` 和 `ViewHolder` 来展示每一项的数据。在 `MainActivity` 中,我们设置了 `ViewHolder` 的点击事件,这里的 `position` 是 `ViewHolder` 的位置,我们可以通过它来获取当前点击的是哪一项。
不过您要求不使用 `position`,那么我们可以在 `SimpleAdapter` 中添加一个接口 `ViewHolderListenerV2`,它定义了 `onItemClick(HashMap<String, String> data)` 方法,这样我们在 `MainActivity` 中就可以通过这个方法获取当前点击的数据了。
这里是修改后的代码:
```java
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private SimpleAdapter mSimAdapter;
private ArrayList<HashMap<String, String>> mDataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化数据
initData();
// 初始化RecyclerView
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mSimAdapter = new SimpleAdapter(mDataList);
mRecyclerView.setAdapter(mSimAdapter);
// 设置ViewHolder的点击事件
mSimAdapter.setViewHolderListenerV2(new SimpleAdapter.ViewHolderListenerV2() {
@Override
public void onItemClick(HashMap<String, String> data) {
// 处理点击事件
Toast.makeText(MainActivity.this, "您点击了" + data.get("title"), Toast.LENGTH_SHORT).show();
}
});
}
// 初始化数据
private void initData() {
mDataList = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
HashMap<String, String> map = new HashMap<>();
map.put("title", "标题" + i);
map.put("content", "内容" + i);
mDataList.add(map);
}
}
}
```
在 `SimpleAdapter` 中,我们修改了 `ViewHolderListener` 为 `ViewHolderListenerV2`,并在 `ViewHolder` 的点击事件中调用了 `ViewHolderListenerV2` 的方法。这样我们在 `MainActivity` 中就可以获取到当前点击的数据了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)