gpt4 book ai didi

java - 编写android代码时此处理程序的用途是什么?

转载 作者:行者123 更新时间:2023-11-29 21:41:56 25 4
gpt4 key购买 nike

在下面的代码中,创建了一个 songsManager 对象,然后为什么使用 this.songsList 来存储歌曲文件,为什么不只使用 songsList。主要问题是这个有什么用,它到底是什么以及什么时候使用?我的主要疑问是,这里因为没有声明其他 songsList,所以 songsList 不会发生冲突,所以为什么要专门将其称为当前类中声明的 songsList。我主要在有参数传递给函数的参数与类中声明的对象或变量的名称相同时使用它,以避免混淆并告诉编译器我想使用在该类中声明的对象而不是那个作为参数传递我使用了这个。如果我错了请纠正我并增加我对此的了解。

感兴趣的代码行后跟//请注意

public class CustomizedListView extends Activity{

private int currentIndex;
private String[] menuItems = {"Play","Share Music Via","Details"};
private LinkedList<File> songsList = new LinkedList<File>();//
private ArrayList<HashMap<String, String>> songsListdata = new ArrayList<HashMap<String, String>>();
private MediaMetadataRetriever mmr = new MediaMetadataRetriever();
private Utilities utils=new Utilities();
ListView list=null;
ModifiedAdapter adapter=null;
SongsManager plm=null;//
Button search;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playlist);

plm = new SongsManager();//
File extStore = Environment.getExternalStorageDirectory();
// get all songs from sdcard
this.songsList = plm.getFilesInFolder(extStore);//
for (int i = 0; i < songsList.size(); i++) {
// creating new HashMap
HashMap<String, String> song = new HashMap<String, String>();
mmr.setDataSource(songsList.get(i).getAbsolutePath().toString());

//getting artist
String artist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST);
if(artist==null)
artist=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);

//getting Duration
String len = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);

long Len=0;
try
{
Len=Integer.parseInt(len);
}
catch(Exception e)
{
Log.i(null, ":conversion error");
}
len=utils.milliSecondsToTimer(Len);
Log.i(null, "length"+len);
song.put("songTitle", (songsList.get(i)).getName().substring(0, ((songsList.get(i)).getName().length() - 4)));
song.put("songArtist", artist);
song.put("duration", len);
song.put("songPath",songsList.get(i).getAbsolutePath().toString());
// adding HashList to ArrayList
songsListdata.add(song);
}

list=(ListView)findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
adapter=new ModifiedAdapter(this, songsListdata);
list.setAdapter(adapter);
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {

final String songPath =songsList.get(position).getAbsolutePath().toString();
AlertDialog.Builder builder = new AlertDialog.Builder(CustomizedListView.this);
builder.setTitle((songsList.get(position)).getName().substring(0, ((songsList.get(position)).getName().length() - 4)));
builder.setItems(menuItems, new DialogInterface.OnClickListener()
{

public void onClick(DialogInterface dialog, int item)
{

if(item==0)
{
Intent in = new Intent(getApplicationContext(),MainActivity.class);
// Sending songIndex to PlayerActivity
in.putExtra("songIndex", position);
setResult(100, in);
// Closing PlayListView
finish();
}
else if(item==2)
{
Intent details = new Intent(getApplicationContext(),Details.class);
details.putExtra("songPath", songPath);
startActivity(details);
}
else if(item==1)
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("audio/*");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(songPath)));
startActivity(intent);
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
});

//Search for a song implementations
search=(Button)findViewById(R.id.searchForSong);
search.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent launchBrowser=new Intent(getApplicationContext(), Browser.class);
startActivity(launchBrowser);
}
});
}

最佳答案

其实这个答案应该分几步来破解

1

这个运算符

它将引用当前使用它的对象/范围

例如:假设按钮监听器是这样制作的

新按钮(上下文).setOnClickListener(新View.onClickListener(public void onClick(View v){//这里用this来指代这个onclicklistener

});

//构造函数

公共(public)类名(int arg1){//所以用这个arg1初始化你类的arg1

//只是为了你写的清晰this.arg1=arg1;

2

这与歌单一起使用是多余的,没有任何意义,因为没有冲突。

希望对你有帮助。

关于java - 编写android代码时此处理程序的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16851123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com