【问题标题】:Make snackbar to appear after arrayadapter click在 arrayadapter 单击后使小吃栏出现
【发布时间】:2020-10-18 02:43:24
【问题描述】:

我有一个 ArrayAdapter 显示项目列表。

每个项目都有一个按钮。

当按钮被点击时,我想显示snackbar(现在它显示一个 toast 消息)。

我想知道如何在 ArrayAdapter 中使用这样的东西?

    Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content),text,Snackbar.LENGTH_SHORT);
    View sbView = snackbar.getView();
    sbView.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));

    TextView tv = (TextView) (snackbar.getView()).findViewById(com.google.android.material.R.id.snackbar_text);
    Typeface font = ResourcesCompat.getFont(getBaseContext(), R.font.assistant);
    tv.setTypeface(font);
    tv.setTextSize( 14 );

    snackbar.setAnchorView(findViewById( R.id.bottom_navigation ));

    snackbar.setDuration( 5000 );
    snackbar.show();

因为我什至在适配器中都没有 findVireById。

适配器的具体部分是:

viewHolder.btn_AddToMyItems.setOnClickListener( v -> {

auth = FirebaseAuth.getInstance();
db = FirebaseFirestore.getInstance();

Intent intent = new Intent(getContext(), MyItemsActivity.class);

Map<String, Object> general_item = new HashMap<>();
general_item .put( "ItemID", item.getId() );
general_item .put("DateCreated", FieldValue.serverTimestamp());

CollectionReference colRefMyItems = db.collection( "Users" ).document( auth.getUid() ).collection( "MyItems" );
Query queryMyItems = colRefMyItems.whereEqualTo("ItemsID", item.getId());
queryMyItems.get().addOnCompleteListener( task -> {
    if (task.isSuccessful()) {
        QuerySnapshot snapshot = task.getResult();
        if (snapshot.isEmpty()){
            db.collection( "Users" ).document( auth.getUid() ).collection( "Items" ).add( general_item );
            Toast.makeText(getContext(), "The item was added successfully", Toast.LENGTH_SHORT).show();
        } else{
            Toast.makeText(getContext(), "This item is already on your list", Toast.LENGTH_SHORT).show();
        }
        intent.putExtra( "TAG","999");
    }
} );

谢谢

【问题讨论】:

  • 显示适配器代码
  • 在下面查看我的答案

标签: java android-arrayadapter android-snackbar


【解决方案1】:
    viewHolder.btn_AddToMyItems.setOnClickListener( v -> {

auth = FirebaseAuth.getInstance();
db = FirebaseFirestore.getInstance();

Intent intent = new Intent(getContext(), MyItemsActivity.class);

Map<String, Object> general_item = new HashMap<>();
general_item .put( "ItemID", item.getId() );
general_item .put("DateCreated", FieldValue.serverTimestamp());

CollectionReference colRefMyItems = db.collection( "Users" ).document( auth.getUid() ).collection( "MyItems" );
Query queryMyItems = colRefMyItems.whereEqualTo("ItemsID", item.getId());
queryMyItems.get().addOnCompleteListener( task -> {
    if (task.isSuccessful()) {
        QuerySnapshot snapshot = task.getResult();
        if (snapshot.isEmpty()){
            db.collection( "Users" ).document( auth.getUid() ).collection( "Items" ).add( general_item );
           Snackbar.make(v,"The item was added successfully",Snackbar.LENGTH_LONG).show();
        } else{
Snackbar.make(v,"This item is already on your list",Snackbar.LENGTH_LONG).show();
            
        }
        intent.putExtra( "TAG","999");
    }
} );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2023-01-19
    相关资源
    最近更新 更多