如何解决通过Gridview android传递选中的项目
我有一个自定义网格适配器,正在尝试使用按钮检查已检查到另一个活动的项目。我试图通过将选中的项目添加到 ArrayList 来做到这一点。
这是我的 MainActivity 中按钮的 onClick 部分:
button.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//String[] URLItem = gridAdapter.getURL();
for(int i = 0; i < gridAdapter.getCount(); i++){
if(gridAdapter.isChecked()){
//checkedURL.add(fullURL[i]);
checkedURL.add(gridAdapter.getItem(i));
}
}
Intent selIntent = new Intent(getApplicationContext(),SelectedLocations.class);
selIntent.putStringArrayListExtra(selKey,checkedURL);
//selIntent.putExtra(selKey,selURL);
startActivity(selIntent);
这是我的自定义适配器:
package com.example.placesofinterest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.ThumbnailUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.GridView;
import android.widget.ImageView;
import androidx.recyclerview.widget.RecyclerView;
import com.android.volley.VolleyError;
import com.android.volley.toolBox.ImageLoader;
import java.util.ArrayList;
public class GridAdapter extends BaseAdapter {
private Context context;
private String[] url;
private ArrayList<String> checkedURL;
private boolean checked;
public boolean isChecked() {
return checked;
}
public ArrayList<String> getCheckedURL() { return checkedURL; }
public GridAdapter(Context c,String[] url){
this.context = c;
this.url = url;
}
@Override
public int getCount() {
return url.length;
}
@Override
public String getItem(int position) {
return url[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position,View convertView,ViewGroup parent) {
LayoutInflater inflater;
if (convertView == null) {
inflater = LayoutInflater.from(context);
ImageLoader imageLoader = MySingleton.getInstance(context.getApplicationContext()).getimageLoader();
if (context instanceof MainActivity){
convertView = inflater.inflate(R.layout.places_layout,parent,false);
}
else if (context instanceof SelectedLocations){
convertView = inflater.inflate(R.layout.selected_layout,false);
}
final View finalConvertView = convertView;
imageLoader.get(url[position],new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer response,boolean isImmediate)
{
Bitmap image = response.getBitmap();
Bitmap thumbnail = ThumbnailUtils.extractThumbnail(image,250,250);
if (context instanceof MainActivity) {
ImageView imageView = finalConvertView.findViewById(R.id.imageView);
imageView.setimageBitmap(thumbnail);
CheckBox checkBox = (CheckBox) finalConvertView.findViewById(R.id.checkBox);
checked = checkBox.isChecked();
if(checked){
checkedURL.add(url[position]);
checked = true;
}else {
//checkedURL.remove(URL[position]);
checked = false;
}
}
else if (context instanceof SelectedLocations){
ImageView selImg = finalConvertView.findViewById(R.id.selImg);
selImg.setimageBitmap(thumbnail);
}
}
@Override
public void onErrorResponse(VolleyError error)
{
System.out.println(error.getMessage());
}
});
}
return convertView;
}
}
如果您需要其他任何东西,这是我的 MainActivity 的其余部分!
package com.example.placesofinterest;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.ThumbnailUtils;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.GridView;
import android.widget.Toast;
import com.android.volley.VolleyError;
import com.android.volley.toolBox.ImageLoader;
import java.util.ArrayList;
import static android.provider.Contacts.SettingsColumns.KEY;
public class MainActivity extends AppCompatActivity {
GridView gridView;
GridAdapter gridAdapter;
ArrayList<String> checkedURL = new ArrayList<String>();
Button button;
String selKey = "Selected";
String fullImg = "Image";
String locName = "Location";
private String fullURL[] = {"http://192.168.0.105/places/amsterdam.png","http://192.168.0.105/places/bali.png","http://192.168.0.105/places/dubai.png","http://192.168.0.105/places/germany.png","http://192.168.0.105/places/cambodia.png","http://192.168.0.105/places/ireland.png","http://192.168.0.105/places/japan.png","http://192.168.0.105/places/prague.png","http://192.168.0.105/places/sweden.png"};
private String location[] = { "Amsterdam","Bali","dubai","Germany","Cambodia","Ireland","Japan","Sweden","Prague"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = findViewById(R.id.grid);
gridAdapter = new GridAdapter(MainActivity.this,fullURL);
gridView.setAdapter(gridAdapter);
button = findViewById(R.id.button);
button.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//checkGridView(gridView);
//checkedURL = gridAdapter.getCheckedURL();
//String[] URLItem = gridAdapter.getURL();
for(int i = 0; i < gridAdapter.getCount(); i++){
if(gridAdapter.isChecked()){
//checkedURL.add(fullURL[i]);
checkedURL.add(gridAdapter.getItem(i));
}
}
//checkedURL = gridAdapter.getCheckedURL();
//String[] selURL = checkedURL.toArray(new String[0]);
//String[] selURL = fullURL;
Intent selIntent = new Intent(getApplicationContext(),selURL);
startActivity(selIntent);
}
});
gridView.setonItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,View view,int position,long id) {
//String imgLoc = location[gridAdapter.getCount() - position - 1];
Intent imgIntent = new Intent(MainActivity.this,ImageActivity.class);
//imgIntent.putExtra(fullImg,clickImg);
String clickURL = fullURL[position];
String imgLoc = location[position];
imgIntent.putExtra(fullImg,clickURL);
imgIntent.putExtra(locName,imgLoc);
startActivity(imgIntent);
}
});
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。