首页 > 解决方案 > 如何为自定义适配器的列表中的不同项目创建自定义 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();
        }
    });
}

}

标签: android

解决方案


尝试在您的 ArrayAdapter 类中制作 Toast,特别是在类似的getView方法中

convertview.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View view) {
         Toast.makeText(mContext, "Custom Toast", Toast.LENGTH_SHORT).show();

     }

});

如果需要,您可以使用 anonTouchListener而不是onClickListener.


推荐阅读