更新按钮可见性以及从第二个活动更改RecyclerView中textview的背景

问题描述

以下是我的应用程序中所需的步骤:

  1. 主要活动包含一个回收站视图,其中包含具有itemID和简短说明的项目。
  2. 用户单击某项时,将进入详细描述活动。
  3. 用户在详细描述活动中单击“标记为完成”按钮时,应通过用蓝色填充简短说明的文本视图以及更改彼此的可见性来更新回收者视图中的相应项目图片显示为可见。

以下是我采取的步骤:

  1. 我已经通过使用((MainActivity) mContext).startActivityForResult(intent,999); (This is placed in the ViewHolder and not on onBindViewHolder within Recycler Adapter)从lili的主要活动回收者角度开始进行了漫长的描述
  2. 在Long Desc中,当用户单击“标记为完成”按钮时,我将发送以下内容
Intent resultIntent = new Intent();
resultIntent.putExtra("Item ID",itemID);
setResult(RESULT_OK,resultIntent);
Log.d(TAG,"onClick: started");
finish();
  1. 尝试在主要活动中使用重写的onResume方法来接受从长desc传递的值。我无法通过此onResume方法更新recyclerview适配器的viewholder中存在的任何值。

下面是主要活动类别

public class MainActivity extends AppCompatActivity {

private static final String TAG = "TAG";
private static RecyclerView itemRecView;
private TextView txtTrekNation;
private ImageView home_logo;
private Context pContext;
private static final int MY_REQUEST = 1001;


@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState)  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    itemRecView = findViewById(R.id.itemRecView);
    txtTrekNation = findViewById(R.id.txtTrekNation);
    home_logo = findViewById(R.id.home_logo);



    itemRecViewAdapter adapter = new itemRecViewAdapter(this);
    itemRecView.setAdapter(adapter);
    itemRecView.setLayoutManager(new linearlayoutmanager(this));
    adapter.setItems(Utils.getInstance().getAllItems());


}


@Override
protected void onResume() {
    super.onResume();
    Log.d(TAG,"onResume: started");

}`

这是我的适配器类

public class itemRecViewAdapter extends RecyclerView.Adapter<itemRecViewAdapter.ViewHolder> {

private Context mContext;

public itemRecViewAdapter(Context mContext) {

    this.mContext = mContext;
}



private ArrayList<Item> items = new ArrayList<>();
private int mExpandedPosition = -1;

public itemRecViewAdapter() {
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_item,parent,false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull final ViewHolder holder,final int position) {
    holder.txtItem.setText(items.get(position).getItemName());
    holder.txtShortDesc.setText(items.get(position).getItemShortDesc());



    if (items.get(position).isExpanded()) {
        TransitionManager.beginDelayedTransition(holder.parent);
        holder.expandedRelLayout.setVisibility(View.VISIBLE);
        holder.downArrow.setVisibility(View.GONE);
        holder.upArrow.setVisibility(View.VISIBLE);
    } else {
        TransitionManager.beginDelayedTransition(holder.parent);
        holder.expandedRelLayout.setVisibility(View.GONE);
        holder.downArrow.setVisibility(View.VISIBLE);
        holder.upArrow.setVisibility(View.GONE);
    }


}

@Override
public int getItemCount() {
    return items.size();
}

public void setItems(ArrayList<Item> items) {
    this.items = items;
    notifyDataSetChanged();
}

public class ViewHolder extends RecyclerView.ViewHolder {

    private TextView txtItem,txtShortDesc;
    private ImageView downArrow,upArrow,btnComplete;
    private RelativeLayout expandedRelLayout,collapsedRelLayout,parent1;
    private CardView parent;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        txtItem = itemView.findViewById(R.id.txtItem);
        txtShortDesc = itemView.findViewById(R.id.txtShortDesc);
        downArrow = itemView.findViewById(R.id.btnDownArrow);
        upArrow = itemView.findViewById(R.id.btnUpArrow);
        btnComplete = itemView.findViewById(R.id.btnComplete);
        expandedRelLayout = itemView.findViewById(R.id.expandedRelLayout);
        collapsedRelLayout = itemView.findViewById(R.id.collapsedRelLayout);
        parent1 = itemView.findViewById(R.id.parent1);
        parent = itemView.findViewById(R.id.parent);

        downArrow.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Item item = items.get(getAdapterPosition());
                item.setExpanded(!item.isExpanded());
                notifyItemChanged(getAdapterPosition());
            }
        });

        upArrow.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Item item = items.get(getAdapterPosition());
                item.setExpanded(!item.isExpanded());
                notifyItemChanged(getAdapterPosition());
            }
        });

        txtShortDesc.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mContext,LongDesc.class);
                intent.putExtra(ITEM_ID_KEY,items.get(getAdapterPosition()).getId());
                ((MainActivity) mContext).startActivityForResult(intent,999);
                mContext.startActivity(intent);

这是我的长描述课

public class LongDesc extends AppCompatActivity {

public static final String ITEM_ID_KEY = "itemID";
private static final String TAG = "TAG";

private TextView txtItemName,txtLongDesc;
private Button btnMarkComplete,btnCosts,btnSubmitEE,btnTestResult,btnTestCost,btnCEC,btnFSW,btnFST;
private ImageView btnBackArrow;
private ScrollView scrollerID;
private Context lContext;



@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_long_desc);
    initViews();
    txtLongDesc.setMovementMethod(LinkMovementMethod.getInstance());



    btnBackArrow.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            LongDesc.this.finish();
        }
    });

    btnCosts.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(LongDesc.this,"This is test",Toast.LENGTH_SHORT).show();
        }
    });

    Intent intent = getIntent();
    if (null != intent) {
        //check to see if final required or not; made itemID final since it was giving error while clicking on markasComplete putExtra
        final int itemID = intent.getIntExtra(ITEM_ID_KEY,-1);
        btnMarkComplete.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent resultIntent = new Intent();
                resultIntent.putExtra("Item ID",itemID);
                setResult(RESULT_OK,resultIntent);
                Log.d(TAG,"onClick: started");
                finish();

            }
        });
        if (itemID != -1) {
            Item incomingItem = Utils.getInstance().getItemById(itemID);
            if (null != incomingItem) {
                setData(incomingItem);
            }
            if (itemID != 3) {
                btnCosts.setVisibility(View.GONE);
                btnSubmitEE.setVisibility(View.GONE);
            } else {
                btnCosts.setVisibility(View.VISIBLE);
                btnSubmitEE.setVisibility(View.VISIBLE);

                btnCosts.setonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent1 = new Intent(LongDesc.this,Costs.class);
                        startActivity(intent1);
                    }
                });

                btnSubmitEE.setonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent2 = new Intent(LongDesc.this,Submit_ee.class);
                        startActivity(intent2);
                    }
                });
            }
            if ((itemID != 4)) {
                btnTestResult.setVisibility(View.GONE);
                btnTestCost.setVisibility(View.GONE);
            } else {
                btnTestResult.setVisibility(View.VISIBLE);
                btnTestCost.setVisibility(View.VISIBLE);

                btnTestResult.setonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent3 = new Intent(LongDesc.this,ConvertLanguageResults.class);
                        startActivity(intent3);
                    }
                });

                btnTestCost.setonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent4 = new Intent(LongDesc.this,LanguageCosts.class);
                        startActivity(intent4);
                    }
                });
            }

            if ((itemID != 5)) {
                btnCEC.setVisibility(View.GONE);
                btnFST.setVisibility(View.GONE);
                btnFSW.setVisibility(View.GONE);
            } else {
                btnCEC.setVisibility(View.VISIBLE);
                btnFST.setVisibility(View.VISIBLE);
                btnFSW.setVisibility(View.VISIBLE);

                btnCEC.setonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent5 = new Intent(LongDesc.this,Cec.class);
                        startActivity(intent5);
                    }
                });

                btnFST.setonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent6 = new Intent(LongDesc.this,Fst.class);
                        startActivity(intent6);
                    }
                });

                btnFSW.setonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent7 = new Intent(LongDesc.this,Fsw.class);
                        startActivity(intent7);
                    }
                });
            }
        }
    }
}

private void setData(Item item) {
    txtItemName.setText(item.getItemName());
    txtLongDesc.setText(item.getItemLongDesc());
}

private void initViews() {
    txtItemName = findViewById(R.id.txtItemName);
    txtLongDesc = findViewById(R.id.txtLongDesc);
    btnMarkComplete = findViewById(R.id.btnMarkComplete);
    btnBackArrow = findViewById(R.id.btnBackArrow);
    btnSubmitEE = findViewById(R.id.btnSubmitEE);
    btnCosts = findViewById(R.id.btnCosts);
    btnTestResult = findViewById(R.id.btnTestResult);
    btnTestCost = findViewById(R.id.btnTestCost);
    scrollerID = findViewById(R.id.scrollerID);
    btnCEC = findViewById(R.id.btnCEC);
    btnFSW = findViewById(R.id.btnFSW);
    btnFST = findViewById(R.id.btnFST);
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)