发布网友 发布时间:2022-04-23 15:37
共2个回答
热心网友 时间:2022-07-15 06:28
用于区分很多相似的View
例如:
button1.setOnClickListener(new OnClickListener ... );可能执行相似的逻辑,但必须分别为两个Button设置两个的OnClick事件,
之所以这样做,因为onClick只有一个参数View。可以通过setTag和getTag来完成:
可以将两个button设置同一个OnClickListener,比如:
这样,就能够通过getTag区分。
用于ListView的复用
写自定义adapter的时候,通常会使用它,比如:
注意:除了上述情况以外,尽量不要直接使用,原因:
一、代码可读性:会给其他的程序员造成困扰
二、由于setTag和getTag设置的是一个Object对象,可能会出现类的转换异常
不过,android4.0以后,有一个更好的方法:setTag(int
key, Object tag)可以通过类似<k,v>键值对的方式存取。
热心网友 时间:2022-07-15 06:28
1. 此行是您的罪魁祸首的一部分:
com.jacksmartie.PhotoMem.MainActivity$1.onItemClick(MainActivity.java:79)
把断点的位置:
Log.d("View 1", imageView.toString());
并期待您的ImageView参考对象[ImageView的],我期待什么,这是一个空没有链接了正常。
如果为null,那你的链接到参考的观点是不正确的。如果多数民众赞成的话,那么你需要将其正确地分配喜欢跳:
Button b = findViewById(R.id.Button01);
然而,由于“什么似乎是列表视图,那拉动略有不同。那你拉视图的方式是错误的 CodeGo.net,背上的研究,应该找帮助清除了!
祝你好运!
JOX
+
2.
那么,这些愿望在哪里它的崩溃。并且它不是清楚自己在做什么。
public View getView(int position, View view, ViewGroup parent) {
imageView.setTag(position);
return imageView;
在哪里imageView自称?什么是它设置为?
private OnItemClickListener itemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
ImageView imageView;
//Variable i, here, is from a for loop.
imageView = (ImageView)v.findViewWithTag(i);
你声明称为第二局部变量imageView在这里,击打它会消失,当你退出范围。如果你依靠此设置为您的imageView变量,你不喜悦。i是从for循环,但如何与本position在getView()方法?
+
3.
对空指针发生在ImageView的variabkle是空的,因为findviewbyid没有找到视图,跳如果一个复选标记,如果它是空的,因为它没有Android的日志不能打印,而不是设置标签的空变量,尝试设置ID这样做
imageView.setId(正电子);
如果我理解正确,做的ID在adapter和自生成视图它并没有一个默认。
该标签是推杆所需要的视图它的自我作为一个辅助变量visely它的对象:)
如果你明确需要那么标记检查视图实际上是存在的,这意味着你是不是重新检查写入标签一路上