java - 在另一个 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 。为了改变图像和文字。
解决方案
您可以使用 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]);
}
推荐阅读
- php - PHP include_once 不工作(尝试了我发现的几乎所有东西)
- r - ggplot2 直方图显示“填充”参数的平均值
- linux - 我们如何使用 bash 自动化 Linux 剪切命令
- jquery - ajax调用后jquery parent()不起作用
- architecture - 镜像外部 API 并与其他数据合并为微服务
- c# - 如何在不重叠的情况下并排绘制 2 个矩形?
- php - 以 PHP 响应作为变量的 JSON REST 请求
- hyperledger-fabric - 为 Hyperledger Fabric/Composer 使用无模式数据?
- java - 使用来自 RESTful/Ajax 源的数据呈现 CellTable 和 SimplePager 的方法是什么?
- matlab - 将 LPSolve 安装到 MATLAB:“找不到 mxlpsolve.dll”