android - 如何为自定义适配器的列表中的不同项目创建自定义 toast 消息
问题描述
所以我有一个程序,我需要根据用户在列表中选择的项目显示不同的 toast。我创建了一个自定义适配器,因为我需要将图片添加到列表中,并创建了一个名为 Day 的对象,其中包含星期几、图像和需要放入 toast 的自定义文本。我的问题是我不知道如何创建一个 onItemClickListener 将我的自定义文本用于我的 toast。这是我的自定义适配器
public class DayAdapter extends ArrayAdapter<Day> {
私有上下文 mContext;诠释mResource;
public DayAdapter(@NonNull Context context, int resource, @NonNull ArrayList<Day> objects) {
super(context, resource, objects);
mContext = context;
mResource = resource;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
String jour = getItem(position).getDay();
int image = getItem(position).getImage();
String message = getItem(position).getMessage();
Day journee = new Day(jour, image, message);
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource, parent, false);
TextView tvJour = (TextView) convertView.findViewById(R.id.textViewJour);
ImageView tvImage = (ImageView) convertView.findViewById(R.id.imageViewJour);
tvJour.setText(jour);
tvImage.setImageResource(image);
return convertView;
}
这是我的主要活动
public class MainActivity extends AppCompatActivity {
ListView liste;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
liste = (ListView) findViewById(R.id.dayList);
ArrayList<Day> semaine = new ArrayList<Day>();
Day lundi = new Day("Lundi", R.drawable.happyface, "Prog lundi");
Day mardi = new Day("Mardi", R.drawable.happyface, "Musique mardi");
Day mercredi = new Day("Mercredi", R.drawable.happyface, "Mercredi");
Day jeudi = new Day("Jeudi", R.drawable.beer, "Work jeudi");
Day vendredi = new Day("Vendredi", R.drawable.beer, "also work vendredi");
Day samedi = new Day("Samedi", R.drawable.malade, "also also work samedi");
Day dimanche = new Day("Dimanche", R.drawable.etude, "Love Dimanche");
semaine.add(lundi);
semaine.add(mardi);
semaine.add(mercredi);
semaine.add(jeudi);
semaine.add(vendredi);
semaine.add(samedi);
semaine.add(dimanche);
DayAdapter adapter = new DayAdapter (this, R.layout.row, semaine);
liste.setAdapter(adapter);
liste.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String messa = adapterView.getAdapter().getItem(i).toString();
Toast.makeText(MainActivity.this, messa, Toast.LENGTH_LONG).show();
}
});
}
}
解决方案
尝试在您的 ArrayAdapter 类中制作 Toast,特别是在类似的getView
方法中
convertview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext, "Custom Toast", Toast.LENGTH_SHORT).show();
}
});
如果需要,您可以使用 anonTouchListener
而不是onClickListener
.
推荐阅读
- javafx - JAVAFX - 为什么我不能添加 JFXTextfield?
- c++ - 这个函数铸造安全吗?
- java - 改造调用入队没有到达任何一个“onResponse”或“onFailure”
- python - Django 部署未在 Google 应用引擎中加载静态文件
- java - 从 obj 模型加载和渲染顶点时,Java/OpenGL 缺少三角形
- scala - 在 Scala 程序的输出中出现 ANSI 真彩色代码的问题
- r - R 正则表达式量词破折号与逗号与 {stringr} 与 {pointblank}
- python - 删除零值的标签
- pdf - PDF 名称对象是否需要大写?
- reactjs - 如果模拟中没有这样的路线,如何将 MirajeJS 重定向到真实请求?