当前位置: 编程技术>移动开发
本页文章导读:
▪property跟_property的一些小结 property和_property的一些小结
在.h文件中:
@interface MyClass:NSObject
{
MyObjecct *_myObject;
}
@property(nonamtic, retain) MyObjecct *myObject;
@end
在.m文件中
@implementation MyClass
@synthesize myObject=_myObje.........
▪ 音乐播发 音乐播放
package com.android.andrew;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import.........
▪ onFling为啥执行不到 onFling为什么执行不到
因为onDown方法return了false,导致依赖于onDown的onFling无法被触发。
改成return true 就可以啦!
......
[1]property跟_property的一些小结
来源: 互联网 发布时间: 2014-02-18
property和_property的一些小结
谢谢,不过就是我其实不太懂,因为我google的时候有的人说加self.myObject比较好,有的说不用,加了反倒有问题(是英文写得,且没有其他语言的例子,我不能很好的迁移,不是很理解),你这边又说加_myObject比较好。能不能给我具体说说原因呀
嗯嗯,有帮助,因为oc的知识点没有系统学过,所以对你一开始的话不是很理解,现在看了一点,总算是有进步啊。还有虽然对在dealloc中加_myObject =nil来直接将其引用基数归0,我理解了,但是还没有代码上的体会。我要继续努力。O(∩_∩)O谢谢!
问下下面的解释对吗?今天看到的觉得好像懂了一些
1、加self的方式:
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
self.student = mystudent; //student 对象 retainCount = 2;
[mystudent release]; //student 对象 retainCount = 1;
retainCount指对象引用计数,student的property 是retain 默认使用self.student引用计数+1。
2、不加self的方式
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
student = mystudent; //student 对象 retainCount = 1;
[mystudent release]; //student 对象内存已释放,如果调用,会有异常
3、加self直接赋值方式
self.student = [[Student alloc] init]; //student 对象 retainCount = 2;容易造成内存泄露
由于objective-c内存管理是根据引用计数处理的,当一个对象的引用计数为零时,gcc才会释放该内存。
问下下面的解释对吗?今天看到的觉得好像懂了一些
1、加self的方式:
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
self.student = mystudent; //student 对象 retainCount = 2;
[mystudent release]; //student 对象 retainCount = 1;
retainCount指对象引用计数,student的property 是retain 默认使用self.student引用计数+1。
2、不加self的方式
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
student = mystudent; //student 对象 retainCount = 1;
[mystudent release]; //student 对象内存已释放,如果调用,会有异常
3、加self直接赋值方式
self.student = [[Student alloc] init]; //student 对象 retainCount = 2;容易造成内存泄露
由于objective-c内存管理是根据引用计数处理的,当一个对象的引用计数为零时,gcc才会释放该内存。
不错,大体理解上没有任何问题,对此做出以下几点补充
1、你可以用[self.student retainCount]打印出引用基数可以看到该基数的确切数值,当然,很熟练就没有必要了。
2、针对你的第二条,这个不加self的sutdent应该是你定义了变量,但是没有对其添加@property 和@synthesize吧。总之,你alloc了一下,又release了一下,基数归0,就不能再引用了,如非要这样可以[student retain]一下 即可调用
3、对于你说的第三条我们一般都这样操作self.student =[ [[Student alloc] init] autoreleae]; 这样autorelease一下,就不会泄漏了。
4、总之,有alloc、copy、retain的地方你就肯定要用一个release或者autorelease与相对应,这就是oc内存管理的黄金法则,当然了,切实的体会还需在代码中多多练习。
--希望对你有帮助,有疑惑得地方再行讨论。
问下下面的解释对吗?今天看到的觉得好像懂了一些
1、加self的方式:
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
self.student = mystudent; //student 对象 retainCount = 2;
[mystudent release]; //student 对象 retainCount = 1;
retainCount指对象引用计数,student的property 是retain 默认使用self.student引用计数+1。
2、不加self的方式
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
student = mystudent; //student 对象 retainCount = 1;
[mystudent release]; //student 对象内存已释放,如果调用,会有异常
3、加self直接赋值方式
self.student = [[Student alloc] init]; //student 对象 retainCount = 2;容易造成内存泄露
由于objective-c内存管理是根据引用计数处理的,当一个对象的引用计数为零时,gcc才会释放该内存。
不错,大体理解上没有任何问题,对此做出以下几点补充
1、你可以用[self.student retainCount]打印出引用基数可以看到该基数的确切数值,当然,很熟练就没有必要了。
2、针对你的第二条,这个不加self的sutdent应该是你定义了变量,但是没有对其添加@property 和@synthesize吧。总之,你alloc了一下,又release了一下,基数归0,就不能再引用了,如非要这样可以[student retain]一下 即可调用
3、对于你说的第三条我们一般都这样操作self.student =[ [[Student alloc] init] autoreleae]; 这样autorelease一下,就不会泄漏了。
4、总之,有alloc、copy、retain的地方你就肯定要用一个release或者autorelease与相对应,这就是oc内存管理的黄金法则,当然了,切实的体会还需在代码中多多练习。
--希望对你有帮助,有疑惑得地方再行讨论。
嗯嗯,retainCount我试了一下,挺好用的,还有你之前说的_object = nil;我也改过来了,非常感谢啊!(*^__^*) 嘻嘻……
在.h文件中:
@interface MyClass:NSObject
{
MyObjecct *_myObject;
}
@property(nonamtic, retain) MyObjecct *myObject;
@end
在.m文件中
@implementation MyClass
@synthesize myObject=_myObject;
- (void)dealloc
{
[_myObject release];
[super dealloc];
}
@end
通过最近google了一些文章,如果大家观后有自己看法希望能留言
_myObject是实例变量,相当于C++中self->myObject
self.myObject相当于[self myObject];是一个消息,也有说是属性
http://stackoverflow.com/questions/5466496/why-rename-synthesized-properties-in-ios-with-leading-underscores
myObject和_myObject是用来区别实例变量消息。一般来说,应该使用setter和getter的属性,而不是直接访问实例变量。
当你写一个setter方法,该方法不能自身使用setter,否则你会产生无限递归,并且发生崩溃。setter调用自身,再次调用自身,直到堆栈溢出。
http://www.iphonedevsdk.com/forum/iphone-sdk-development/98273-feeling-confused-about-_property-and-property.html
写成这样:
@interface MyClass @property (nonatomic, retain) NSString* myProperty; - (NSString*)someOtherMethod; @end @implementation MyClass @synthesize myProperty = _myProperty; // setter and ivar are created automatically - (NSString*)myProperty { return [_myProperty stringByAppendingString:@" Tricky."]; } - (NSString*)someOtherMethod { return [self myProperty]; }http://stackoverflow.com/questions/9541828/property-and-setters-and-getters
http://stackoverflow.com/questions/4172810/what-is-the-difference-between-ivars-and-properties-in-objective-c
1 楼
白色蜻蜓
2012-09-05
建议在dealloc中 [_myObject release]之后加一个 _myObject =nil 效果更好
2 楼
synchronized_lala
2012-09-05
白色蜻蜓 写道
建议在dealloc中 [_myObject release]之后加一个 _myObject =nil 效果更好
谢谢,不过就是我其实不太懂,因为我google的时候有的人说加self.myObject比较好,有的说不用,加了反倒有问题(是英文写得,且没有其他语言的例子,我不能很好的迁移,不是很理解),你这边又说加_myObject比较好。能不能给我具体说说原因呀
3 楼
白色蜻蜓
2012-09-07
myObject=_myObject,前者是引用,后者是内存。
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
4 楼
synchronized_lala
2012-09-08
白色蜻蜓 写道
myObject=_myObject,前者是引用,后者是内存。
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
嗯嗯,有帮助,因为oc的知识点没有系统学过,所以对你一开始的话不是很理解,现在看了一点,总算是有进步啊。还有虽然对在dealloc中加_myObject =nil来直接将其引用基数归0,我理解了,但是还没有代码上的体会。我要继续努力。O(∩_∩)O谢谢!
5 楼
synchronized_lala
2012-09-09
白色蜻蜓 写道
myObject=_myObject,前者是引用,后者是内存。
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
问下下面的解释对吗?今天看到的觉得好像懂了一些
1、加self的方式:
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
self.student = mystudent; //student 对象 retainCount = 2;
[mystudent release]; //student 对象 retainCount = 1;
retainCount指对象引用计数,student的property 是retain 默认使用self.student引用计数+1。
2、不加self的方式
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
student = mystudent; //student 对象 retainCount = 1;
[mystudent release]; //student 对象内存已释放,如果调用,会有异常
3、加self直接赋值方式
self.student = [[Student alloc] init]; //student 对象 retainCount = 2;容易造成内存泄露
由于objective-c内存管理是根据引用计数处理的,当一个对象的引用计数为零时,gcc才会释放该内存。
6 楼
白色蜻蜓
2012-09-10
synchronized_lala 写道
白色蜻蜓 写道
myObject=_myObject,前者是引用,后者是内存。
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
问下下面的解释对吗?今天看到的觉得好像懂了一些
1、加self的方式:
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
self.student = mystudent; //student 对象 retainCount = 2;
[mystudent release]; //student 对象 retainCount = 1;
retainCount指对象引用计数,student的property 是retain 默认使用self.student引用计数+1。
2、不加self的方式
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
student = mystudent; //student 对象 retainCount = 1;
[mystudent release]; //student 对象内存已释放,如果调用,会有异常
3、加self直接赋值方式
self.student = [[Student alloc] init]; //student 对象 retainCount = 2;容易造成内存泄露
由于objective-c内存管理是根据引用计数处理的,当一个对象的引用计数为零时,gcc才会释放该内存。
不错,大体理解上没有任何问题,对此做出以下几点补充
1、你可以用[self.student retainCount]打印出引用基数可以看到该基数的确切数值,当然,很熟练就没有必要了。
2、针对你的第二条,这个不加self的sutdent应该是你定义了变量,但是没有对其添加@property 和@synthesize吧。总之,你alloc了一下,又release了一下,基数归0,就不能再引用了,如非要这样可以[student retain]一下 即可调用
3、对于你说的第三条我们一般都这样操作self.student =[ [[Student alloc] init] autoreleae]; 这样autorelease一下,就不会泄漏了。
4、总之,有alloc、copy、retain的地方你就肯定要用一个release或者autorelease与相对应,这就是oc内存管理的黄金法则,当然了,切实的体会还需在代码中多多练习。
--希望对你有帮助,有疑惑得地方再行讨论。
7 楼
synchronized_lala
2012-09-11
白色蜻蜓 写道
synchronized_lala 写道
白色蜻蜓 写道
myObject=_myObject,前者是引用,后者是内存。
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
在init和dealloc方法中最好用_myObject,因为这样直接初始化或销毁内存,比self.myObject这样调用引用要效率高,
在其他方法中就self.myObject调用引用进行操作了。
至于建议在dealloc中加_myObject =nil就是在销毁的时候直接将其引用基数归0,就是回收内存嘛,呵呵
--希望对你有帮助
问下下面的解释对吗?今天看到的觉得好像懂了一些
1、加self的方式:
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
self.student = mystudent; //student 对象 retainCount = 2;
[mystudent release]; //student 对象 retainCount = 1;
retainCount指对象引用计数,student的property 是retain 默认使用self.student引用计数+1。
2、不加self的方式
Student *mystudent = [[Student alloc] init]; //mystudent 对象 retainCount = 1;
student = mystudent; //student 对象 retainCount = 1;
[mystudent release]; //student 对象内存已释放,如果调用,会有异常
3、加self直接赋值方式
self.student = [[Student alloc] init]; //student 对象 retainCount = 2;容易造成内存泄露
由于objective-c内存管理是根据引用计数处理的,当一个对象的引用计数为零时,gcc才会释放该内存。
不错,大体理解上没有任何问题,对此做出以下几点补充
1、你可以用[self.student retainCount]打印出引用基数可以看到该基数的确切数值,当然,很熟练就没有必要了。
2、针对你的第二条,这个不加self的sutdent应该是你定义了变量,但是没有对其添加@property 和@synthesize吧。总之,你alloc了一下,又release了一下,基数归0,就不能再引用了,如非要这样可以[student retain]一下 即可调用
3、对于你说的第三条我们一般都这样操作self.student =[ [[Student alloc] init] autoreleae]; 这样autorelease一下,就不会泄漏了。
4、总之,有alloc、copy、retain的地方你就肯定要用一个release或者autorelease与相对应,这就是oc内存管理的黄金法则,当然了,切实的体会还需在代码中多多练习。
--希望对你有帮助,有疑惑得地方再行讨论。
嗯嗯,retainCount我试了一下,挺好用的,还有你之前说的_object = nil;我也改过来了,非常感谢啊!(*^__^*) 嘻嘻……
[2] 音乐播发
来源: 互联网 发布时间: 2014-02-18
音乐播放
package com.android.andrew;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
public class AndroidMusicActivity extends Activity implements OnItemClickListener{
/** Called when the activity is first created. */
private String TAG = "Music";
private String[] title = {
"MUSIC-01",
"MUSIC-02",
"MUSIC-03",
"MUSIC-04",
"MUSIC-05",
"MUSIC-06",
"MUSIC-07",
"MUSIC-08",
"MUSIC-09",
"MUSIC-10",
};
private String[] addr = {
"http://zhangmenshiting2.baidu.com/data2/music/13764893/13764893.mp3?xcode=d0f73ca2ecfc6d410d7b4b9a27aa30f1&mid=0.57743919005883/忍不住原谅.mp3",
"http://web.kugou.com/?action=single&filename=%u4F55%u665F%u94ED__-__%u4F5B%u8BF4%u3010%u5BAB%u9501%u73E0%u5E18%u7247%u5C3E%u66F2%u3011&hash=f833c4ccb5ad5324a3fa94c0918124a8&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u848B%u6BC5__-__%u9000%u4E0D%u56DE%u3010%u4EB2%u7231%u7684%u56DE%u5BB6%u63D2%u66F2%u3011&hash=a3162bb54a5f06341a7058e79e4207a0&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u5355%u8272%u51CC__-__%u5355%u8272%u51B0%u6DC7%u51CC&hash=7ab7e9510ba387ff93a7cdc8d72cc204&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u963F%u6084__-__%u5982%u679C%u8FD9%u662F%u7231%u3010%u592B%u59BB%u90A3%u4E9B%u4E8B%u63D2%u66F2%u3011&hash=333bf2680b23f163f0abd3eb8745083c&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u5C0F%u6C88%u9633__-__%u6211%u7684%u773C%u6CEA%u4E3A%u8C01%u98DE%u3010%u602A%u4FA0%u6B27%u9633%u5FB7%u7247%u5C3E%u66F2%u3011&hash=0073959337325f0fabc09d2f5073623d&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u6C88%u6625%u9633__-__%u6A31%u6843%u7EA2%u3010%u6A31%u6843%u4E3B%u9898%u66F2%u3011&hash=0197813ee3ce9ea79903985799107c23&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u9648%u695A%u751F%u3001%u4F55%u6D01__-__%u7ECF%u8FC7%u3010%u592B%u59BB%u90A3%u4E9B%u4E8B%u4E3B%u9898%u66F2%u3011&hash=e9525ab9d34d4e7f655337d28c224aa8&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u51B7%u6F20__-__%u7231%u4E0D%u518D%u6765&hash=100b82bd15944aad72a461480886aff6&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u4E00%u52A0%u4E00%u7EC4%u5408__-__%u6700%u6DF1%u7684%u75DB%u3010%u4EB2%u7231%u7684%u56DE%u5BB6%u63D2%u66F2%u3011&hash=a091abfe771fcde1f8b2f03db6f579c0&timelen=0µblog=1&chl=kugou",
};
List<Map<String, Object>> list;
private final String TITLE_STR = "title";
private final String ADDR_STR = "addr";
private Uri uri;
private List<Map<String,Object>> getDate(){
list = new ArrayList<Map<String,Object>>();
for(int i=0;i<addr.length;i++){
Map<String,Object> item = new HashMap<String,Object>();
item.put(TITLE_STR,title[i]);
item.put(ADDR_STR, addr[i]);
list.add(item);
}
return list;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getDate();
ListView itemlist = (ListView) findViewById(R.id.list);
SimpleAdapter adapter = new SimpleAdapter(this,(List<Map<String, Object>>)list,
R.layout.main, new String[] {TITLE_STR,null },
new int[] {R.id.text1 ,R.id.text2});
itemlist.setAdapter(adapter);
itemlist.setOnItemClickListener(this);
itemlist.setSelection(0);
}
public void onItemClick(AdapterView parent, View v, int position, long id) {
Map map = (HashMap) parent.getAdapter().getItem(position);
String Addr = (String) map.get(ADDR_STR);
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse(Addr);
intent.setData(uri);
intent.setClassName("com.android.music", "com.android.music.MediaPlaybackActivity");
startActivity(intent);
}
}
package com.android.andrew;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
public class AndroidMusicActivity extends Activity implements OnItemClickListener{
/** Called when the activity is first created. */
private String TAG = "Music";
private String[] title = {
"MUSIC-01",
"MUSIC-02",
"MUSIC-03",
"MUSIC-04",
"MUSIC-05",
"MUSIC-06",
"MUSIC-07",
"MUSIC-08",
"MUSIC-09",
"MUSIC-10",
};
private String[] addr = {
"http://zhangmenshiting2.baidu.com/data2/music/13764893/13764893.mp3?xcode=d0f73ca2ecfc6d410d7b4b9a27aa30f1&mid=0.57743919005883/忍不住原谅.mp3",
"http://web.kugou.com/?action=single&filename=%u4F55%u665F%u94ED__-__%u4F5B%u8BF4%u3010%u5BAB%u9501%u73E0%u5E18%u7247%u5C3E%u66F2%u3011&hash=f833c4ccb5ad5324a3fa94c0918124a8&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u848B%u6BC5__-__%u9000%u4E0D%u56DE%u3010%u4EB2%u7231%u7684%u56DE%u5BB6%u63D2%u66F2%u3011&hash=a3162bb54a5f06341a7058e79e4207a0&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u5355%u8272%u51CC__-__%u5355%u8272%u51B0%u6DC7%u51CC&hash=7ab7e9510ba387ff93a7cdc8d72cc204&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u963F%u6084__-__%u5982%u679C%u8FD9%u662F%u7231%u3010%u592B%u59BB%u90A3%u4E9B%u4E8B%u63D2%u66F2%u3011&hash=333bf2680b23f163f0abd3eb8745083c&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u5C0F%u6C88%u9633__-__%u6211%u7684%u773C%u6CEA%u4E3A%u8C01%u98DE%u3010%u602A%u4FA0%u6B27%u9633%u5FB7%u7247%u5C3E%u66F2%u3011&hash=0073959337325f0fabc09d2f5073623d&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u6C88%u6625%u9633__-__%u6A31%u6843%u7EA2%u3010%u6A31%u6843%u4E3B%u9898%u66F2%u3011&hash=0197813ee3ce9ea79903985799107c23&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u9648%u695A%u751F%u3001%u4F55%u6D01__-__%u7ECF%u8FC7%u3010%u592B%u59BB%u90A3%u4E9B%u4E8B%u4E3B%u9898%u66F2%u3011&hash=e9525ab9d34d4e7f655337d28c224aa8&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u51B7%u6F20__-__%u7231%u4E0D%u518D%u6765&hash=100b82bd15944aad72a461480886aff6&timelen=0µblog=1&chl=kugou",
"http://web.kugou.com/?action=single&filename=%u4E00%u52A0%u4E00%u7EC4%u5408__-__%u6700%u6DF1%u7684%u75DB%u3010%u4EB2%u7231%u7684%u56DE%u5BB6%u63D2%u66F2%u3011&hash=a091abfe771fcde1f8b2f03db6f579c0&timelen=0µblog=1&chl=kugou",
};
List<Map<String, Object>> list;
private final String TITLE_STR = "title";
private final String ADDR_STR = "addr";
private Uri uri;
private List<Map<String,Object>> getDate(){
list = new ArrayList<Map<String,Object>>();
for(int i=0;i<addr.length;i++){
Map<String,Object> item = new HashMap<String,Object>();
item.put(TITLE_STR,title[i]);
item.put(ADDR_STR, addr[i]);
list.add(item);
}
return list;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getDate();
ListView itemlist = (ListView) findViewById(R.id.list);
SimpleAdapter adapter = new SimpleAdapter(this,(List<Map<String, Object>>)list,
R.layout.main, new String[] {TITLE_STR,null },
new int[] {R.id.text1 ,R.id.text2});
itemlist.setAdapter(adapter);
itemlist.setOnItemClickListener(this);
itemlist.setSelection(0);
}
public void onItemClick(AdapterView parent, View v, int position, long id) {
Map map = (HashMap) parent.getAdapter().getItem(position);
String Addr = (String) map.get(ADDR_STR);
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse(Addr);
intent.setData(uri);
intent.setClassName("com.android.music", "com.android.music.MediaPlaybackActivity");
startActivity(intent);
}
}
[3] onFling为啥执行不到
来源: 互联网 发布时间: 2014-02-18
onFling为什么执行不到
因为onDown方法return了false,导致依赖于onDown的onFling无法被触发。
改成return true 就可以啦!
最新技术文章: