【发布时间】:2018-03-12 23:31:37
【问题描述】:
正如您在查看我的代码的某些部分所看到的那样,我对 Android 和 Java 非常陌生,但是对于专业人士来说,尽管代码看起来很糟糕,但到目前为止它正在做我希望它做的事情(我是当然我会到达那里......大声笑)。我有一个带有回收器视图的自定义适配器。有一些文本视图。我还有一个带有电子邮件按钮的底部菜单,我想使用 2 个视图(R.id.brand_name 和 R.id.cases_text_view)并将它们作为电子邮件意图中的文本发送。底部菜单和电子邮件意图在原处工作,但我不知道如何将两个文本视图调用到 EXTRA_TEXT。请帮帮我。
还有一件事:谢谢你们所有人,如果不是这个网站和你们的帮助,我就不会使用这个应用程序。对此,我真的非常感激。
这是带有底部菜单和电子邮件意图的类:
public class BlackLabel extends brands {
private RecyclerView recyclerView;
//private String modelArrayList;
//private Context ctx;
public static ArrayList<Model> modelArrayList;
private CustomAdapter customAdapter;
//private Button btnnext;
// supossing to have an image called ic_play inside my drawables.
public String[] brandlist = new String[]{
"Black Label 340ml NRB (85023)",
"Black Label 330ml Cans (85736)",
"Black label 500ml Cans (85023)",
"Black Label 440ml NRB (86798)",
"Black Label 330ml RB (85556)",
"Black Label 750ml RB (85021)",
"Black Label 340ml NRB 12 Pack (87009)",
"Black Label 500ml Cans 12 Pack (85022)"};
public int[] pallet_size = {
84,
127,
81,
80,
120,
70,
132,
90};
public int[] myimage = {
R.drawable.black_label,
R.drawable.brutal_fruit,
R.drawable.castle_lager,
R.drawable.flying_fish,
R.drawable.castle_lite,
R.drawable.hansa,
R.drawable.lion_lager,
R.drawable.milk_stout};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.order_by_brand);
setTitle("Black Label");
recyclerView = (RecyclerView) findViewById(R.id.recycler);
modelArrayList = getModel();
customAdapter = new CustomAdapter(this);
recyclerView.setAdapter(customAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.VERTICAL, false));
}
private ArrayList<Model> getModel() {
final ArrayList<Model> list = new ArrayList<>();
for (int i = 0; i < 8; i++) {
final Model model = new Model();
model.setNumber(0);
model.setNumber2(0);
model.setImage(myimage[i]);
model.setBrand(brandlist[i]);
model.setPallet_size(pallet_size[i]);
list.add(model);
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavView_Bar);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
Menu menu = bottomNavigationView.getMenu();
MenuItem menuItem = menu.getItem(0);
menuItem.setChecked(true);
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.ic_home:
Intent intent1 = new Intent(BlackLabel.this, MainActivity.class);
startActivity(intent1);
break;
case R.id.ic_clear:
Intent intent2 = new Intent(BlackLabel.this, BlackLabel.class);
startActivity(intent2);
break;
case R.id.ic_email:
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:who@where.co.za"));
intent.putExtra(Intent.EXTRA_SUBJECT, "Please place order for....");
intent.putExtra(Intent.EXTRA_TEXT, "Here I want some text from the adapter.");
startActivity(intent);
}
return false;
}
});
}
return list;
}}
这是我的自定义适配器:
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
private LayoutInflater inflater;
private Context ctx;
public CustomAdapter(Context ctx) {
inflater = LayoutInflater.from(ctx);
this.ctx = ctx;
}
@Override
public CustomAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.rv_item, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final CustomAdapter.MyViewHolder holder, int position) {
holder.tvBrand.setText((CharSequence) modelArrayList.get(position).getBrand());
holder.tvImage.setImageResource(Integer.parseInt(String.valueOf(modelArrayList.get(position).getImage())));
holder.tvCases.setText(String.valueOf(modelArrayList.get(position).getNumber()));
holder.tvPallet_size.setText(String.valueOf(modelArrayList.get(position).getPallet_size()));
holder.tvCases.setText(String.valueOf(modelArrayList.get(position).getNumber2()));
holder.tvPallets.setText(String.valueOf(modelArrayList.get(position).getNumber()));
holder.tvCases.setText(String.valueOf(modelArrayList.get(position).getNumber2()));
}
@Override
public int getItemCount() {
return modelArrayList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
protected Button btn_cases_plus, btn_cases_minus, btn_pallets_plus, btn_pallets_minus;
protected ImageView tvImage;
private TextView tvBrand, tvCases,tvPallets, tvPallet_size;
public MyViewHolder(View itemView) {
super(itemView);
tvBrand = (TextView) itemView.findViewById(R.id.brand_name);
tvImage = (ImageView) itemView.findViewById(R.id.beer_logo);
tvCases = (TextView) itemView.findViewById(R.id.cases_text_view);
tvPallet_size = (TextView) itemView.findViewById(R.id.pallets_size);
tvPallets = (TextView) itemView.findViewById(R.id.pallets_text_view);
btn_cases_plus = (Button) itemView.findViewById(R.id.casePlus1);
btn_cases_minus = (Button) itemView.findViewById(R.id.caseMinus1);
btn_pallets_plus = (Button) itemView.findViewById(R.id.palletsPlus1);
btn_pallets_minus = (Button) itemView.findViewById(R.id.palletsMinus1);
btn_cases_plus.setTag(R.integer.btn_cases_plus_view, itemView);
btn_cases_minus.setTag(R.integer.btn_cases_minus_view, itemView);
btn_cases_plus.setOnClickListener(this);
btn_cases_minus.setOnClickListener(this);
btn_pallets_plus.setTag(R.integer.btn_pallets_plus_view, itemView);
btn_pallets_minus.setTag(R.integer.btn_pallets_minus_view, itemView);
btn_pallets_plus.setOnClickListener(this);
btn_pallets_minus.setOnClickListener(this);
}
// onClick Listener for view
@Override
public void onClick(View v) {
if (v.getId() == btn_cases_plus.getId()){
View tempview = (View) btn_cases_plus.getTag(R.integer.btn_cases_plus_view);
TextView tvCases = (TextView) tempview.findViewById(R.id.cases_text_view);
int number = Integer.parseInt(tvCases.getText().toString()) + 1;
tvCases.setText(String.valueOf(number));
modelArrayList.get(getAdapterPosition()).setNumber(number);
} else if(v.getId() == btn_cases_minus.getId()) {
View tempview = (View) btn_cases_minus.getTag(R.integer.btn_cases_minus_view);
TextView tvCases = (TextView) tempview.findViewById(R.id.cases_text_view);
int number = Integer.parseInt(tvCases.getText().toString()) - 1;
if (number == 0 || number <0) {
Toast.makeText(ctx,"You cannot order less than one case", Toast.LENGTH_SHORT).show();
tvCases.setText(String.valueOf(0));
return;
}
tvCases.setText(String.valueOf(number));
modelArrayList.get(getAdapterPosition()).setNumber(number);
} else if(v.getId() == btn_pallets_plus.getId()) {
View tempview = (View) btn_pallets_plus.getTag(R.integer.btn_pallets_plus_view);
TextView tvPallets = (TextView) tempview.findViewById(R.id.pallets_text_view);
TextView tvCases = (TextView) tempview.findViewById(R.id.cases_text_view);
TextView tvPallet_size = (TextView) tempview.findViewById(R.id.pallets_size);
int number = Integer.parseInt(tvPallets.getText().toString()) + 1;
tvPallets.setText(String.valueOf(number));
int number2 = Integer.parseInt(tvPallets.getText().toString()) * Integer.parseInt(tvPallet_size.getText().toString());
tvCases.setText(String.valueOf(number2));
modelArrayList.get(getAdapterPosition()).setNumber(number);
modelArrayList.get(getAdapterPosition()).setNumber2(number2);
} else if(v.getId() == btn_pallets_minus.getId()) {
View tempview = (View) btn_pallets_minus.getTag(R.integer.btn_pallets_minus_view);
TextView tvPallets = (TextView) tempview.findViewById(R.id.pallets_text_view);
TextView tvCases = (TextView) tempview.findViewById(R.id.cases_text_view);
TextView tvPallet_size = (TextView) tempview.findViewById(R.id.pallets_size);
int number = Integer.parseInt(tvPallets.getText().toString()) - 1;
tvPallets.setText(String.valueOf(number));
int number2 = Integer.parseInt(tvPallets.getText().toString()) * Integer.parseInt(tvPallet_size.getText().toString());
tvCases.setText(String.valueOf(number2));
if (number == 0 || number <0) {
Toast.makeText(ctx,"You cannot order less than one pallet", Toast.LENGTH_SHORT).show();
tvCases.setText(String.valueOf(0));
tvPallets.setText(String.valueOf(0));
}
modelArrayList.get(getAdapterPosition()).setNumber(number);
modelArrayList.get(getAdapterPosition()).setNumber2(number2);
}
}
}
}
【问题讨论】:
-
您想将来自 R.id.brand_name 和 R.id.cases_text_view 视图的文本放在意图中吗? "intent.putExtra(Intent.EXTRA_TEXT, "这里我想要一些来自适配器的文本。");" ?
-
是的 Anton,我想将两个文本视图(R.id.brand_name 和 R.id.cases_text_view)中的值放入该意图中,但我不知道如何调用它们。
标签: android email android-intent android-recyclerview