首页 > 解决方案 > 在另一个 imageview 和 textview 中设置列​​表视图项的图像和文本

问题描述

我有一个图像数组和这样的字符串:

String[] stations = new String[] {
            "GHOTKI 91 Radio FM","UmerKot 91.4 Radio","TMK 100.20 Radio"
};

public static int [] images ={R.drawable.ghotkifmlogo,R.drawable.umerkotfmlogo,R.drawable.tmkfmlogo};

在自定义列表视图中,如何在另一个图像视图和 texview 中替换它们?

我需要每次使用单击项目的图像和文本更改该图像视图和文本视图。

这是我的自定义适配器:

public class TrackAdapter extends  BaseAdapter{
    String [] description;
    Context context;
    int [] imageId;

    public TrackAdapter(Context c, String[] d, int[] prgmImages) {

        description=d;
        context= c;
        imageId=prgmImages;

    }

    @Override
    public int getCount() {
        return description.length;
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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

        if(convertView == null){
            convertView = LayoutInflater.from(context).inflate(R.layout.cardviewlayout,null);
        }
        //get the textview and set its text
        TextView tv=(TextView) convertView.findViewById(R.id.tracktitle);
        //get the img view and set its img icon
        ImageView im=(ImageView) convertView.findViewById(R.id.trackimage);

        tv.setText(description[position]);
        im.setImageResource(imageId[position]);

        return convertView;
    }

这是主要活动:

private TextView mSelectedTrackTitle;
    private ImageView mSelectedTrackImage;
    private MediaPlayer mMediaPlayer;
    private ImageView mPlayerControl;
    ListView lv_tracks;
    TrackAdapter track_adapter;

    String[] stations = new String[] {
            "GHOTKI 91 Radio FM","UmerKot 91.4 Radio","TMK 100.20 Radio"
    };
     public static int [] images ={R.drawable.ghotkifmlogo,R.drawable.umerkotfmlogo,R.drawable.tmkfmlogo};



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mMediaPlayer = new MediaPlayer();



        //get a reference to our ListView so we can associate it with our custom ArrayAdapter
        lv_tracks = (ListView) findViewById(R.id.track_list);
        //create a new CustomAdapter
        track_adapter =new TrackAdapter(this,stations,images);
        lv_tracks.setAdapter(track_adapter);//connect the ListView with myCustomAdapter

        //Want to set selected image and title here in these
        mSelectedTrackTitle = (TextView)findViewById(R.id.selected_track_title);
        mSelectedTrackImage =(ImageView)findViewById(R.id.selected_track_image);
lv_tracks.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
??
}

不太明白如何处理 onitemselect 。为了改变图像和文字。

标签: javaandroidlistview

解决方案


您可以使用 listview OnItemClickListener获取当前项目位置, 它将返回单击项目的位置,然后您可以将此位置用作所需的操作

   lv_tracks.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) {
        mSelectedTrackTitle.setText(stations[position]);
    mSelectedTrackImage.setImageDrawable(ContextCompat.getDrawable(this,images [position])); 
   // or 
        mSelectedTrackImage.setImageResource(images [position]);
        }

推荐阅读