我有一个listview
ListView poiList = (ListView) findViewById(R.id.poiList);
Run Code Online (Sandbox Code Playgroud)
并填充它
SimpleAdapter adapter = new SimpleAdapter(this, data,
android.R.layout.simple_list_item_2,
new String[] {"name", "dist"},
new int[] {android.R.id.text1,
android.R.id.text2});
poiList.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
使用这个SimpleAdapter,ListView中的每一行都有一个项目和一个子项目.一切都很完美.
现在我为我的ListView实现onItemClick:
poiList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String poiName = ((TextView)view).getText().toString();
}
}
Run Code Online (Sandbox Code Playgroud)
但我不能在我选择的行中得到文本.我认为该行中有多个TextView(Item和subitem).我怎么能参考他们?
我知道你应该注意重新定义setattr方法,你可以在循环中结束.
我知道有两个避免循环的解决方案:
1)使用对象超类,调用:
object.__setattr__(instance,attr,value)
Run Code Online (Sandbox Code Playgroud)
2)使用类dict:
self.__dict__[attr] = value
Run Code Online (Sandbox Code Playgroud)
我的问题是,__dict__解决方案是否也不应该在循环中结束?为什么不呢?
是因为那样我们调用的__setattr__是__dict__对象(一切都是对象)还是什么?
如果是这样,它不应该对所有事情都一样吗?