我想用java代码在ListView中创建一个选择器

我想用java代码在ListView中创建一个选择器,listview,arraylist,adapter,selector,listviewitem,Listview,Arraylist,Adapter,Selector,Listviewitem,我想用java做选择器。屏幕视图由列表视图组成。我想让你改变枪的形象,当用户按下一把枪很短的时间,并影响选择器。但我无法检查ListView项。我将更改后的图片扔到数组列表中。我该怎么做 import android.content.Context; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Vibrator; i

我想用java做选择器。屏幕视图由列表视图组成。我想让你改变枪的形象,当用户按下一把枪很短的时间,并影响选择器。但我无法检查ListView项。我将更改后的图片扔到
数组列表中
。我该怎么做

import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Vibrator;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;**strong text**
import android.widget.ListView;

import java.util.ArrayList;

public class MakinalilarFragment extends Fragment {
    private MediaPlayer mMediaPlayer;
    private AudioManager mAudioManager;

    private AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
        @Override
        public void onAudioFocusChange(int focusChange) {
            if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
                    focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {        
                mMediaPlayer.pause();
                mMediaPlayer.seekTo(0);
            } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
                mMediaPlayer.start();
            } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {

                releaseMediaPlayer();
            }
        }
    };


    private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            releaseMediaPlayer();
        }
    };

    public MakinalilarFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.word_list, container, false);

        mAudioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);

        final ArrayList<Gun> guns = new ArrayList<Gun>();
        guns.add(new Gun(R.string.name_aa_12,R.drawable.aa12_medium, R.raw.aa12_sound,R.drawable.fire_aa12));
        guns.add(new Gun(R.string.name_acr,R.drawable.acr_medium, R.raw.acr_sound,R.drawable.fire_acr));
        guns.add(new Gun(R.string.name_ak_47,R.drawable.ak47_medium, R.raw.ak47_sound,R.drawable.fire_ak47));
        guns.add(new Gun(R.string.name_fal,R.drawable.fal_medium, R.raw.fal_sound,R.drawable.fire_fal));
        guns.add(new Gun(R.string.name_intervention,R.drawable.intervention_medium, R.raw.intervention_sound,R.drawable.fire_intervention));
        guns.add(new Gun(R.string.name_m1,R.drawable.m1_medium, R.raw.m1_sound,R.drawable.fire_m1));
        guns.add(new Gun(R.string.name_m4,R.drawable.m4_medium, R.raw.m4_sound,R.drawable.fire_m4));

        GunAdapter adapter = new GunAdapter(getActivity(), guns);
        ListView listView = (ListView) rootView.findViewById(R.id.list);
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                Gun gun = guns.get(position);

                int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener,
                        AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

                if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {

                    mMediaPlayer = MediaPlayer.create(getActivity(), gun.getAudioResourceId());
                    mMediaPlayer.start();

                    Vibrator v = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
                    v.vibrate(500);
                    mMediaPlayer.setOnCompletionListener(mCompletionListener);
                }
            }
        });

        return rootView;
    }

    @Override
    public void onStop() {
        super.onStop();
        releaseMediaPlayer();
    }

    private void releaseMediaPlayer() {
        if (mMediaPlayer != null) {

            mMediaPlayer.release();
            mMediaPlayer = null;
            mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
        }
    }
}
导入android.content.Context;
导入android.media.AudioManager;
导入android.media.MediaPlayer;
导入android.os.Bundle;
导入android.os.可控震源;
导入android.support.v4.app.Fragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView**强文本**
导入android.widget.ListView;
导入java.util.ArrayList;
公共类MakinalilarFragment扩展了片段{
私有媒体层;
私人音频经理;
私有AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener=新建AudioManager.OnAudioFocusChangeListener(){
@凌驾
音频焦点更改(int focusChange)的公共无效{
if(focusChange==AudioManager.AUDIOFOCUS\u丢失\u瞬态||
focusChange==AudioManager.AUDIOFOCUS\u丢失\u瞬态\u可以\u DUCK){
暂停();
mMediaPlayer.seekTo(0);
}else if(焦点更改==音频管理器。音频焦点\u增益){
mmediplayer.start();
}else if(focusChange==AudioManager.AUDIOFOCUS\u损耗){
释放MediaPlayer();
}
}
};
私有MediaPlayer.OnCompletionListener MCCompletionListener=新MediaPlayer.OnCompletionListener(){
@凌驾
完成时的公共作废(MediaPlayer MediaPlayer){
释放MediaPlayer();
}
};
公共MakinalilarFragment(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.word\u列表,容器,false);
mAudioManager=(AudioManager)getActivity().getSystemService(Context.AUDIO_服务);
最终ArrayList枪=新ArrayList();
枪。添加(新枪(R.string.name_aa_12,R.drawable.aa12_medium,R.raw.aa12_sound,R.drawable.fire_aa12));
枪。添加(新枪(R.string.name_acr,R.drawable.acr_medium,R.raw.acr_sound,R.drawable.fire_acr));
枪。添加(新枪(R.string.name_ak_47,R.drawable.ak47_medium,R.raw.ak47_sound,R.drawable.fire_ak47));
枪。添加(新枪(R.string.name_fal,R.drawable.fal_medium,R.raw.fal声音,R.drawable.fire_fal));
添加(新枪(R.string.name\u干预,R.drawable.intervention\u medium,R.raw.intervention\u声音,R.drawable.fire\u干预));
枪。添加(新枪(R.string.name_m1,R.drawable.m1_medium,R.raw.m1_sound,R.drawable.fire_m1));
枪。添加(新枪(R.string.name_m4,R.drawable.m4_medium,R.raw.m4_sound,R.drawable.fire_m4));
GunAdapter=新的GunAdapter(getActivity(),guns);
ListView ListView=(ListView)rootView.findViewById(R.id.list);
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
枪=枪。获取(位置);
int result=mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener,
AudioManager.STREAM_音乐、AudioManager.AUDIOFOCUS_增益_瞬态);
如果(结果==AudioManager.AUDIOFOCUS\u请求\u已批准){
mMediaPlayer=MediaPlayer.create(getActivity(),gun.getAudioResourceId());
mmediplayer.start();
可控震源v=(可控震源)getActivity().getSystemService(Context.可控震源\u服务);
v、 振动(500);
mmediplayer.setOnCompletionListener(mcCompletionListener);
}
}
});
返回rootView;
}
@凌驾
公共void onStop(){
super.onStop();
释放MediaPlayer();
}
私有void releaseMediaPlayer(){
if(mmediplayer!=null){
mmediplayer.release();
mmediplayer=null;
mAudioManager.AudioFocus(mOnAudioFocusChangeListener);
}
}
}
这里是适配器代码

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;

public class GunAdapter extends ArrayAdapter<Gun> {

    public GunAdapter(Context context, ArrayList<Gun> guns) {
        super(context, 0, guns);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View listItemView = convertView;
        if (listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(
                    R.layout.list_item, parent, false);
        }


        Gun currentGun = getItem(position);

        TextView nameGunTextView = (TextView) listItemView.findViewById(R.id.textView);

        nameGunTextView.setText(currentGun.getNameGunId());

        ImageView imageView = (ImageView) listItemView.findViewById(R.id.image);

        imageView.setImageResource(currentGun.getImageResourceId());

        return listItemView;
    }
}  
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
导入java.util.ArrayList;
公共类GunAdapter扩展ArrayAdapter{
公共GunAdapter(上下文上下文,ArrayList guns){
超级(上下文,0,枪);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
View listItemView=convertView;
如果(listItemView==null){
listItemView=LayoutFlater.from(getContext()).inflate(
R.layout.list_项,父项,false);
}
枪电流枪=获取项目(位置);
TextView名称GunTextView=(TextView)listItemView.findViewById(R.id.TextView);
nameGunTextView.setText(currentGun.getNameGunId());
ImageView ImageView=(ImageView)listItemView.findViewById(R.id.image);
setImageResource(currentGun.getImageResourceId());
返回listItemView;
}
}