问题描述
在我的活动中,我有一个EditText,ImageView和Button。加载我的活动后,我将一个ImageView放在GridView中。
Gridview的第一个图像已被选择为默认图像,我想输入EditText名称并将EditText值和默认的所选图像传递给用户(如果用户不喜欢默认图像,也可以选择自己的图像)到New Activity
我的问题是用户输入edittext值,然后按按钮,它仅传递EditText值,而不传递默认的Selected Image,如果用户在gridview中选择其他图像,则如果他选择,则同时传递ImageView和EditText值手动选择默认的图像,然后它可以正常工作。
如何传递默认标记的图像,而无需再次选择如何传递给另一个活动 [![在此处输入图片描述] [1]] [1]
我的代码:
int[] images={R.drawable.menu,R.drawable.musicBox,R.drawable.shoppingbag,R.drawable.shoppingcart,R.drawable.wallet,R.drawable.weddingdress};
int imageRes;
public NewListCreate() {
}
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.new_list_create,container,false);
ImageButton done = view.findViewById(R.id.done);
final EditText listname = (EditText) view.findViewById(R.id.listname);
final GridView gridView = (GridView) view.findViewById(R.id.gridview);
final CustomAdpter customAdpter = new CustomAdpter(images,getContext());
gridView.setAdapter(customAdpter);
gridView.setonItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView,View view,int i,long l) {
customAdpter.selectedImage = i;
customAdpter.notifyDataSetChanged();
imageRes = images[i];
}
});
done.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String itemname = listname.getText().toString();
if (!TextUtils.isEmpty(listname.getText().toString())) {
startActivity(new Intent(getContext(),CheckslateHome.class).putExtra("data",itemname).putExtra("image",imageRes));
dismiss();
} else {
Toast.makeText(getContext(),"List Name not Empty ",Toast.LENGTH_SHORT).show();
}
}
});
return view;
CustomAdapter
private int[] icons;
private Context context;
private LayoutInflater layoutInflater;
public int selectedImage = 0;
public CustomAdpter(int[] icons,Context context) {
this.icons = icons;
this.context = context;
this.layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return icons.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
public int selectedImage = 0;
@Override
public View getView(int i,ViewGroup viewGroup) {
if (view == null)
{
view = layoutInflater .inflate(R.layout.image_list,viewGroup,false);
}
ImageView imageicons = view.findViewById(R.id.image);
if (i < icons.length) {
imageicons.setimageResource(icons[i]);
if (i != selectedImage) {
imageicons.setimageAlpha(50);
}
imageicons.setScaleType(ImageView.ScaleType.CENTER_CROP);
// imageicons.setLayoutParams(new GridView.LayoutParams(150,150));
if (i == selectedImage) {
view.setBackgroundColor(Color.WHITE);
} else {
view.setBackgroundColor(Color.TRANSPARENT);
}
};
return view;
解决方法
尝试此代码:
activity_frist.xml
<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FirstActivity">
<ImageView
android:id="@+id/img_one"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_centerInParent="true"
android:background="?selectableItemBackground"
android:scaleType="fitXY"
android:src="@drawable/img_natural" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/img_one"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:gravity="center_horizontal"
android:text="Go to second Activity"
android:textSize="20dp" />
</RelativeLayout>
FirstActivity.java
public class FirstActivity extends AppCompatActivity {
ImageView img_one;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frist);
img_one = (ImageView) findViewById(R.id.img_one);
img_one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BitmapDrawable drawable = (BitmapDrawable) img_one.getDrawable();
Bitmap bitmap = drawable.getBitmap();
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("BitmapImage",bitmap);
startActivity(intent);
}
});
}
}
activity_second.xml
<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FirstActivity">
<ImageView
android:id="@+id/img_two"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_centerInParent="true"
android:background="?selectableItemBackground"
android:scaleType="fitXY" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/img_two"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:layout_marginTop="20dp"
android:text="Second Activity"
android:textSize="20dp" />
</RelativeLayout>
SecondActivity.java
public class SecondActivity extends AppCompatActivity {
ImageView img_two;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
img_two = (ImageView) findViewById(R.id.img_two);
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
img_two.setImageBitmap(bitmap);
}
}