在baseadapter的onclick图像变化 [英] onclick image change on baseadapter
本文介绍了在baseadapter的onclick图像变化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想从onclicklistener改变ImageView的来源(当然音乐)。它是变化的,但第一个图像改变每次点击。我该如何解决呢?
(对不起,我英文不好)
在此输入code
公共查看getView(最终诠释P,视图V的ViewGroup以及ARG2)
{
Log.w(BaseAdapter,P:+ P +,preP:+ preP); 如果(V == NULL)
V = li.inflate(R.layout.listview_item,NULL); ImageView的IV =(ImageView的)v.findViewById(R.id.imageView1);
TextView的baslik =(TextView中)v.findViewById(R.id.textView1);
baslik.setText(isimler [P]); 如果(P = = preP)
iv.setImageResource(R.drawable.stop); v.setOnClickListener(新View.OnClickListener()
{
公共无效的onClick(视图v)
{
如果($ P $的pP!= P)
{
的System.out.println(MUZIKçalışılacak。);
mPlay = MediaPlayer.create(getApplicationContext(),sarkilar [P]);
mPlay.start();
$ P $的pP = P;
}
其他
{
mPlay.stop();
$ P $的pP = -1;
} // getView(P,V,ARG2);
initList();
}
}); 返回伏;
}
解决方案
您必须使用 onItemClickListener
在的ListView
因为这是做的正确方法。
listView.setOnItemClickListener(新OnItemClickListener(){ 公共无效onItemClick(适配器视图<>适配器视图,视图V,INT POS机,
长ARG3){
项目I =(项目)adapterView.getItemAtPosition(POS)
ImageView的IV =(ImageView的)v.findViewById(R.id.imageView1);
iv.setImageResource(R.drawable.your_image); mPlay = MediaPlayer.create(getApplicationContext(),sarkilar [POS]);
mPlay.start();
}
});
或
如果我不得不修改code
v.setTag(P); //附着的位置到您的视图
v.setOnClickListener(新View.OnClickListener()
{
公共无效的onClick(视图v)
{
//你如何得到正确的ImageView
ImageView的IV =(ImageView的)v.findViewById(R.id.imageView1);
iv.setImageResource(R.drawable.your_image); //位置连接到单击视图
INT位置=(int)的v.getTag(); 如果($ P $的pP!=位置)
{
的System.out.println(MUZIKçalışılacak。);
mPlay = MediaPlayer.create(getApplicationContext(),sarkilar [位置]);
mPlay.start();
$ P $压PP =位置;
}
其他
{
mPlay.stop();
$ P $的pP = -1;
} // getView(P,V,ARG2);
initList();
}
});
但我个人不会使用第二种方法
I want to change imageview source (and music of course) from onclicklistener. It is change, but first image changing every click. How can i fix it?
(Sorry for my bad English)
enter code here
public View getView(final int p, View v, ViewGroup arg2)
{
Log.w("BaseAdapter", "p: "+p+", preP: "+preP );
if (v == null)
v = li.inflate(R.layout.listview_item, null);
ImageView iv = (ImageView) v.findViewById(R.id.imageView1);
TextView baslik = (TextView) v.findViewById(R.id.textView1);
baslik.setText( isimler[p] );
if ( p == preP )
iv.setImageResource(R.drawable.stop);
v.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
if( preP != p )
{
System.out.println("müzik çalışılacak.");
mPlay = MediaPlayer.create( getApplicationContext(), sarkilar[p] );
mPlay.start();
preP=p;
}
else
{
mPlay.stop();
preP=-1;
}
//getView(p, v, arg2);
initList();
}
});
return v;
}
解决方案
You have to use a onItemClickListener
on your ListView
because this is the correct way to do it.
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View v, int pos,
long arg3) {
Item i = (Item) adapterView.getItemAtPosition(pos);
ImageView iv = (ImageView) v.findViewById(R.id.imageView1);
iv.setImageResource(R.drawable.your_image);
mPlay = MediaPlayer.create( getApplicationContext(), sarkilar[pos] );
mPlay.start();
}
});
OR
If I had to modify your code
v.setTag(p); //attach the position to your view
v.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
//How you get the correct ImageView
ImageView iv = (ImageView) v.findViewById(R.id.imageView1);
iv.setImageResource(R.drawable.your_image);
//The position is attached to the Clicked view
int position = (int) v.getTag();
if( preP != position )
{
System.out.println("müzik çalışılacak.");
mPlay = MediaPlayer.create( getApplicationContext(), sarkilar[position] );
mPlay.start();
preP=position;
}
else
{
mPlay.stop();
preP=-1;
}
//getView(p, v, arg2);
initList();
}
});
But personally I would not use the second approach
这篇关于在baseadapter的onclick图像变化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文